-1

我正在尝试在 Fedora 25 上的 MariaDB 10.1.25 和 DBeaver 作为 sql 编辑器上执行此事务。

单独的每个查询都可以正常工作,但是将它们包装在事务块上时总是失败。

BEGIN;
INSERT INTO quality.tb_account (email, password, registration_date, active, screen_name)
      VALUES ('user11@email.com', 'password', CURRENT_DATE(), TRUE, 'user11');
INSERT INTO quality.tb_account_roles (account_id, role_id)
      VALUES  (LAST_INSERT_ID(), 1);
COMMIT;

错误是下一个:

SQL Error [1064] [42000]: (conn:2) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO quality.tb_account (email, password, registration_date, active, scre' at line 2
Query is : BEGIN;
INSERT INTO quality.tb_account (email, password, registration_date, active, screen_name) VALUES ('user11@email.com', 'password', CURRENT_DATE(), TRUE, 'user11');
INSERT INTO quality.tb_account_roles (account_id, role_id) VALUES (LAST_INSERT_ID(), 1);
COMMIT
  (conn:2) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO quality.tb_account (email, password, registration_date, active, scre' at line 2
Query is : BEGIN;
INSERT INTO quality.tb_account (email, password, registration_date, active, screen_name) VALUES ('user11@email.com', 'password', CURRENT_DATE(), TRUE, 'user11');
INSERT INTO quality.tb_account_roles (account_id, role_id) VALUES (LAST_INSERT_ID(), 1);
COMMIT
    org.mariadb.jdbc.internal.util.dao.QueryException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO quality.tb_account (email, password, registration_date, active, scre' at line 2
Query is : BEGIN;
INSERT INTO quality.tb_account (email, password, registration_date, active, screen_name) VALUES ('user11@email.com', 'password', CURRENT_DATE(), TRUE, 'user11');
INSERT INTO quality.tb_account_roles (account_id, role_id) VALUES (LAST_INSERT_ID(), 1);
COMMIT

我究竟做错了什么??为什么每个查询单独工作而不是一起工作?

4

1 回答 1

0

您必须单独发出每个 SQL 语句——不要试图将它们连接在一起。

请注意,它说“...near 'INSERT...”意味着它到达了“;” 但在那之后不喜欢找东西。

于 2017-08-30T01:25:24.823 回答