【问题标题】:SQL Query syntax error in C++ program but works in MySQL WorkbenchC++ 程序中的 SQL 查询语法错误,但在 MySQL Workbench 中有效
【发布时间】:2016-09-01 23:20:05
【问题描述】:

这是查询:

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 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;

有什么想法吗?

【问题讨论】:

  • 那不是a查询,是8个查询/命令;根据您连接到服务器的方式,每个“执行”方法调用可能会限制一个查询/命令。我相信 MySQL ODBC 驱动程序有一个是否允许的设置,不同的 API 可能有类似的限制。
  • @Uueerdo 谢谢!继续下一个菜鸟错误!

标签: c++ mysql exception transactions workbench


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-14
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多