MySQL允许保存无效日期

时间:2013-09-12 14:33:48

标签: mysql ruby-on-rails date

我正在编写一个rails应用程序,我将保存日期。现在我正在尝试复制一个保存错误日期的错误。但每当我尝试保存时,我都会收到以下错误,

Incorrect date value: '10256-05-05' for column 'transaction_date' at row 1

所以我认为我的MySQL有不同之处。我正在运行Server version: 5.6.11,然后遇到了这个tutorial,它提到了MySQL设置ALLOW_INVALID_DATES。然后我发现这个问题有一些类似的错误here。所以我打开了MySQL并运行了

SET SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

我得到了这个

mysql> SET SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
Query OK, 0 rows affected (0.00 sec)

但是当我退出i并打开续集专业版并尝试保存错误的日期时,它再次给我中指。我在/etc/

中创建了一个my.cnf文件

但我不知道那里发生了什么。我认为那就是我应该像ALLOW_INVALID_DATES这样的东西,以便它永远存在。但我害怕弄乱这些文件。 ??请帮助:)

2 个答案:

答案 0 :(得分:3)

我尝试了一些事情,我最终重新安装了mysql2 gem,然后通过家庭酿造重新安装了最新的mySQL,这样它就是一个干净的安装。然后我打开了sql和

SET sql_mode = '';

将其设为^

然后重新打开它并将模式更改为此。

set global sql_mode="NO_ENGINE_SUBSTITUTION";

我现在可以保存无效日期。这些将在数据库中显示为0000-00-00,不会引发异常。

答案 1 :(得分:0)

如果您使用的是OS X并使用brew的plist for launchctl(基本上,如果你已经完成了ln -sf /usr/local/opt/mysql/homebrew.mxcl.mysql.plist~/ Library / LaunchAgents)来启动mysql服务器,我不得不编辑下面的plist文件,使其启动mysql服务器进程,并将sql_mode设置为空白。我尝试更改各种my.cnf文件以采用sql_mode变量设置,但它对我来说无效。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>KeepAlive</key>
  <true/>
  <key>Label</key>
  <string>homebrew.mxcl.mysql</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/opt/mysql/bin/mysqld_safe</string>
    <string>--bind-address=127.0.0.1</string>
    <string>--sql-mode= </string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>WorkingDirectory</key>
  <string>/usr/local/var</string>
</dict>
</plist>