mysql 5.6
遇到這個問題
Error Number: 1406</p><p>Data too long for column 'referer' at row 1.....
意思是說要寫入 referer 這個欄位的資料過長 (超過原 referer 的欄位長度)(過去 mysql 會自動截掉過長的資料 再存入 referer 欄位中)
這個問題出在 sql_mode 這項設定
mysql> show variables like 'sql_mode';
+---------------+--------------------------------------------+
| Variable_name | Value |
+---------------+--------------------------------------------+
| sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------+
mysql> SET @@global.sql_mode= 'NO_ENGINE_SUBSTITUTION'; 重設 sql_mode 拿掉 STRICT_TRANS_TABLES 這一項即可
另外
在 /etc/my.cnf 中設定
sql_mode="NO_ENGINE_SUBSTITUTION"
重新啟動 mysqld 後
sql_mode 的值居然沒變!!! 居然沒變!!! 居然沒變!!!
mysql> show variables like 'sql_mode';
+---------------+--------------------------------------------+
| Variable_name | Value |
+---------------+--------------------------------------------+
| sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------+
原因
在 /usr/local/mysql 中還有另一個 my.cnf 會被 mysqld 讀入
/usr/local/mysql/my.cnf 裏頭只有一行設定:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
把這一行註解掉, 重新啟動 mysqld 就OK