升级到Rails 4,对于Rails连接,现在似乎默认启用了MySQL严格模式。我之所以这么说,是因为我的Rails应用程序在保存大于255个字符的字符串值时会得到“Mysql2 2:错误:数据太长而不能使用列”。然而,我将相同的查询粘贴到MySQL控制台(据报告,全局严格模式为off),它运行良好,只是有截断警告。作为进一步的证据,上面写着 "Rails 4在默认情况下都使用严格模式“。
我的问题是如何从Rails应用程序中关闭严格模式?我宁愿现在避免升级任何东西来支持它。
发布于 2014-02-19 22:35:36
可以在database.yml中使用strict: false设置严格模式,如下所示:
production:
host: ...
username: ...
strict: falsehttps://api.rubyonrails.org/v4.2.8/classes/ActiveRecord/ConnectionAdapters/MysqlAdapter.html
发布于 2017-09-09 07:35:56
mysql2 gem公开一个执行关于连接和重新连接的初始命令的选项。您可以在init_command内部设置database.yml
production:
host: ...
username: ...
init_command: "SET @@SESSION.sql_mode = ''"发布于 2014-02-06 22:12:06
以下是@edubriguenti的回答,我发现了这个。将帖子和评论应用到environment.rb中,我添加了以下内容,看起来解决了这个问题。
# Set MySQL to clear sql mode for all connections
class ActiveRecord::ConnectionAdapters::Mysql2Adapter
alias :connect_no_sql_mode :connect
def connect
connect_no_sql_mode
execute("SET sql_mode = ''")
end
end
ActiveRecord::Base.connection.reconnect!https://stackoverflow.com/questions/21420122
复制相似问题