【发布时间】:2017-04-29 13:22:20
【问题描述】:
我正在关注 This Post 并尝试通过 rails 迁移添加 levenshtein mysql 功能,如下所示:
class AddLevenshteinFunctionToMysql < ActiveRecord::Migration
def self.up
ActiveRecord::Base.connection.execute <<-SQL
DELIMITER $$
CREATE FUNCTION levenshtein( s1 VARCHAR(255), s2 VARCHAR(255) )
RETURNS INT
DETERMINISTIC
.
.
.
SQL
end
def self.down
ActiveRecord::Base.connection.execute <<-SQL
DROP FUNCTION levenshtein;
SQL
end
end
但是,我收到如下错误:
Mysql2::Error: 你的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本以获得正确的语法 在 'DELIMITER $$
附近使用
当我直接在 MySQL 控制台中尝试时,确切的代码运行良好。但我想通过 rails 迁移添加它。怎么了?
编辑
如果我删除 DELIMITER,则会出现以下错误(第 39 行是 END$$)
Mysql2::Error: 你的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本以获得正确的语法 在第 39 行使用 near ''
编辑
我得到了一个很好的答案来解释错误的原因,但不是修复。 ANSWER
【问题讨论】:
-
只需删除DELIMITTERs和$$
标签: mysql ruby-on-rails migration