我有一个 *. sql文件,它是自动生成的,包含我的数据库的所有删除和创建信息。
现在我想使用ActiveRecord执行SQL语句:
ActiveRecord::Base.connection.execute File.read( filename )
我得到的错误是
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DROP TABLE IF EXISTS `airports`;
然后是 *. sql文件的完整内容。
然而,如果我只是将 *. sql的内容复制并粘贴到PhpMyAdmin中并在那里执行它,它就可以运行,没有任何问题。
有没有更好的方法?我必须在某处指定mysql版本吗?
1条答案
按热度按时间xoefb8l81#
ActiveRecord::Base.connection.execute
清理输入,不允许在一条语句中运行多个查询。一种解决方法是将文件的内容拆分为单个查询,并独立运行每个查询:
更高级的版本将跳过空条件。可能出现空字符串是因为
split
在最后一个';'。我会跳过这样的空白查询字符串: