首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rails中关闭MySQL严格模式

如何在Rails中关闭MySQL严格模式
EN

Stack Overflow用户
提问于 2014-01-29 01:04:02
回答 5查看 11K关注 0票数 25

升级到Rails 4,对于Rails连接,现在似乎默认启用了MySQL严格模式。我之所以这么说,是因为我的Rails应用程序在保存大于255个字符的字符串值时会得到“Mysql2 2:错误:数据太长而不能使用列”。然而,我将相同的查询粘贴到MySQL控制台(据报告,全局严格模式为off),它运行良好,只是有截断警告。作为进一步的证据,上面写着 "Rails 4在默认情况下都使用严格模式“。

我的问题是如何从Rails应用程序中关闭严格模式?我宁愿现在避免升级任何东西来支持它。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-02-19 22:35:36

可以在database.yml中使用strict: false设置严格模式,如下所示:

代码语言:javascript
复制
production:
  host: ...
  username: ...
  strict: false

https://api.rubyonrails.org/v4.2.8/classes/ActiveRecord/ConnectionAdapters/MysqlAdapter.html

票数 27
EN

Stack Overflow用户

发布于 2017-09-09 07:35:56

mysql2 gem公开一个执行关于连接和重新连接的初始命令的选项。您可以在init_command内部设置database.yml

代码语言:javascript
复制
production:
  host: ...
  username: ...
  init_command: "SET @@SESSION.sql_mode = ''"
票数 12
EN

Stack Overflow用户

发布于 2014-02-06 22:12:06

以下是@edubriguenti的回答,我发现了这个。将帖子和评论应用到environment.rb中,我添加了以下内容,看起来解决了这个问题。

代码语言:javascript
复制
# 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!
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21420122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档