c++ - C++ 程序中的 SQL 查询语法错误,但在 MySQL Workbench 中有效

标签 c++ mysql exception transactions workbench

这是查询:

START TRANSACTION;
SET FOREIGN_KEY_CHECKS = 0;
SET UNIQUE_CHECKS = 0;
SET AUTOCOMMIT = 0;
INSERT INTO n2 (idbin,vertices) VALUES("0",2),("1",2);
SET UNIQUE_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 1;
COMMIT;

异常(exception):

MySQL ERR: SQLException in gen_simple_graphs.cc(printSqlException) on line 404
MySQL ERR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET FOREIGN_KEY_CHECKS = 0;SET UNIQUE_CHECKS = 0;SET AUTOCOMMIT = 0;INSERT INTO ' at line 1 (MySQL error code: 1064, SQLState: 42000 )

当我在 MySQL 工作台中运行相同的查询时,它工作得非常好。事实上,我在程序执行查询之前将查询打印到控制台,准确地复制它并将其粘贴到工作台中,并且运行没有问题。

这就是直接从控制台看到的样子:

START TRANSACTION;SET FOREIGN_KEY_CHECKS = 0;SET UNIQUE_CHECKS = 0;SET AUTOCOMMIT = 0;INSERT INTO n2 (idbin,vertices) VALUES("0",2),("1",2);SET UNIQUE_CHECKS = 1;SET FOREIGN_KEY_CHECKS = 1;COMMIT;

有什么想法吗?

最佳答案

字符 ; 结束查询,那么这意味着 MySQL WorkBench IDE 中的一个新语句,但在 C++ 中的查询内部是不允许的,因为这样就变成了更多查询/语句..并且您会引发错误。

关于c++ - C++ 程序中的 SQL 查询语法错误,但在 MySQL Workbench 中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37079921/

相关文章:

c# - C# using 语句执行 try/finally 吗?

c++ - 从 C `goto` 错误处理范例转换到 C++ 异常处理范例

成对初始化的 C++ vector - 编译错误

mysql - SQL,选择不等于的地方

mysql - Entity Framework 中的数据库 View 问题

mysql - 从多个表中选择但按日期时间字段排序

c++ - 判断SQLite数据库是否被锁定

c++ - 使用 main.cpp 和 foo.cpp

c++ - 大规模使用 Meyer 的建议以偏爱非成员(member)、非 friend 功能?

java - java中的这些注释会抛出什么异常?