【问题标题】:Why can't I set a variable in a prepared statement in MySQL?为什么我不能在 MySQL 的准备好的语句中设置变量?
【发布时间】:2017-06-29 16:34:47
【问题描述】:

我正在运行一个脚本来在 MySQL 数据库中插入一些数据,并且它在 MySQL 工作台中正常运行。但是,当我尝试通过 JDBC 从 Java 运行它时,出现错误。脚本是:

INSERT INTO `pa_record` (`username`, `pa_record_type`, `record_time`) VALUES (?, ?, CURRENT_TIMESTAMP);
SET @record_id := 1;
INSERT INTO `pa_crud` (`pa_record_id`, `table_name`) VALUES (@record_id, ?);

我从 JDBC 得到的错误是

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'SET @record_id := 1; 附近使用正确的语法 在第 2 行插入 pa_crud (pa_record_id, table_name) VALUES'

有什么想法吗?

【问题讨论】:

    标签: java mysql jdbc prepared-statement


    【解决方案1】:

    许多(大多数?)数据库访问库不允许在一次执行中使用多个语句;那些这样做的,通常需要通过更改设置来激活该功能。 它可能不是在抱怨 SET,而是在第一个查询结束后你有任何东西。

    【讨论】:

    • 100% 正确,谢谢。该设置可以在连接字符串中设置,allowMultiQueries=true
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2011-05-14
    • 2011-07-09
    • 2016-05-22
    • 2011-09-16
    • 2023-03-19
    • 2010-12-07
    相关资源
    最近更新 更多