2

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

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

所以我认为我的 MySQL 与它有一些不同。我正在运行Server version: 5.6.11,然后遇到了本教程,它提到了 MySQL 设置 ALLOW_INVALID_DATES。然后我发现这个问题在这里有一些类似的错误。所以我打开 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 并打开 sequel pro 并尝试保存不正确的日期时,它又给了我中指。我创建了一个 my.cnf 文件/etc/

但我不知道里面有什么。我认为这就是我应该坚持的地方,ALLOW_INVALID_DATES这样它才能永久存在。但我害怕弄乱这些文件。?? 请帮忙 :)

4

2 回答 2

4

我尝试了一些方法,最终重新安装了mysql2gem,然后通过 home brew 重新安装了最新的 mySQL,这样就可以进行全新安装了。然后我打开sql和

SET sql_mode = '';

设置成这样 ^

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

set global sql_mode="NO_ENGINE_SUBSTITUTION";

我现在可以保存无效日期。这些将出现0000-00-00在 db 中,不会引发异常。

于 2013-09-16T12:11:38.873 回答
0

如果您在 OS X 上并使用 brew 的 plist 进行 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>
于 2013-12-29T23:03:59.727 回答