我正在编写一个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/
但我不知道那里发生了什么。我认为那就是我应该像ALLOW_INVALID_DATES
这样的东西,以便它永远存在。但我害怕弄乱这些文件。 ??请帮助:)
答案 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>