当我从 mysql 控制台或 MySQL Workbench 更改 Delimeter 时,我没有收到任何错误, 但是当我在 ruby on rails 中嵌入相同的代码时,我得到了错误
mysql> DELIMITER $$
mysql>
没有报错。
但是
ActiveRecord::Base.connection.execute(%Q{
DELIMITER $$
})
给出:
ActiveRecord::StatementInvalid: Mysql2::Error: 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 'DELIMITER $$' at line 1:
最佳答案
top answer是正确的(Rails 不能执行 DELIMITER
因为它是一个 MYSQL 命令),但是@ishandutta2007 的后续问题没有得到回答,所以我会在这里回答。
DELIMITER
通常用于包装 mysql 函数和过程体;要在 Rails 中实现这一点,只需将过程主体包装在它自己的执行语句中。
例如,代码可能如下所示:
execute <<-SQL
DROP FUNCTION IF EXISTS MyFunc;
DELIMITER $$
CREATE FUNCTION My Func
. . .
$$
DELIMITER ;
SQL
将变成以下内容,多个 execute
调用充当通过重新定义定界符的“作用域”:
execute 'DROP FUNCTION IF EXISTS MyFunc'
execute <<-SQL
CREATE FUNCTION My Func
. . .
SQL
关于mysql - 'DELIMITER $$' 附近的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15656876/