使用 JDBC 将数据从 MATLAB 插入到 PostgreSQL 表中会引发 BatchUpdateException

发布于 2024-12-03 05:06:28 字数 737 浏览 0 评论 0原文

我正在尝试从 MATLAB 写入 PostgreSQL 数据库表。我已使用 JDBC 进行连接并创建了表,但当我尝试插入记录时收到 BatchUpdateException。

用于插入数据的 MATLAB 查询为:

user_table = 'rm_user';
colNames = {user_id};
data = {longRecords(iterator)};
fastinsert(conn, user_table, colNames, data);

异常显示:

java.sql.BatchUpdateException: Batch entry 0 INSERT INTO rm_user (user_id) VALUES ( '4') was aborted.  Call getNextException to see the cause.

但我不知道如何从 MATLAB 调用 getNextException

有什么想法导致问题或如何找到有关异常的更多信息吗?

编辑

原来我正在查看比我的版本更新的 MATLAB 版本的文档。我已从 fastinsert 更改为 insert,现在可以正常工作了。不过,我仍然有兴趣知道是否有办法可以使用 MATLAB 中的 getNextException

I am trying to write to a PostgreSQL database table from MATLAB. I have got the connection working using JDBC and created the table, but I am getting a BatchUpdateException when I try to insert a record.

The MATLAB query to insert the data is:

user_table = 'rm_user';
colNames = {user_id};
data = {longRecords(iterator)};
fastinsert(conn, user_table, colNames, data);

The exception says:

java.sql.BatchUpdateException: Batch entry 0 INSERT INTO rm_user (user_id) VALUES ( '4') was aborted.  Call getNextException to see the cause.

But I don't know how to call getNextException from MATLAB.

Any ideas what's causing the problem or how I can find out more about the exception?

EDIT

Turns out I was looking at documentation for a newer version of MATLAB than mine. I have changed from fastinsert to insert and it is now working. However, I'm still interested in knowing if there is a way I could use getNextException from MATLAB.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

香草可樂 2024-12-10 05:06:28

这应该有效:

try
   user_table = 'rm_user';
   colNames = {user_id};
   data = {longRecords(iterator)};
   fastinsert(conn, user_table, colNames, data);
catch err
   err.getNextException ()
end

或者,只需查看捕获的错误,它应该包含相同的信息。

另外,Matlab 有一个函数 lasterr ,它会给你最后一个错误,而不会一个 catch 语句。该函数已弃用,但您可以在提供的链接中找到替换文档。

This should work:

try
   user_table = 'rm_user';
   colNames = {user_id};
   data = {longRecords(iterator)};
   fastinsert(conn, user_table, colNames, data);
catch err
   err.getNextException ()
end

Alternatively, just look at the caught error, it should contain the same information.

Also, Matlab has a function lasterr which will give you the last error without a catch statement. The function is deprecated, but you can find the documentation for replacements at the link provided.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文