MySQLを5.5から5.6にアップグレードした後、一部のアプリは問題に直面し、この問題を解決するためにsql_modeを空白に設定する必要があります。追加した sql_mode = ''
からmy.cnf
ですが、mysqlの設定には影響がありませんでした。
Sql_modeを空白にするにはどうすればよいですか?
誰もがMySQL 5.5を使用していたので、誰かが私の組織で同じことを尋ねました。すべてのDBサーバーは、過去8か月間にMySQL 5.6にアップグレードされました。一部のクライアントアプリケーションもsql_mode
の変更の影響を受けていました。
私はあなたがしたことがうまくいかない理由を見つけました、そして回避策は非常に簡単です。
MySQL 5.5ドキュメントによると、sql_modeのデフォルトは空白文字 です。
MySQL 5.6 Documentation によると、sql_modeはデフォルトで
NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
5.6.6からGAへOK、あなたが座っていることを願っています。
これは、Oracleが実装したレイジーな方法です sql_mode MySQL 5.6:追加のmy.cnf
ファイルがあります。
走れば
cat /usr/my.cnf
次が表示されます
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
28行目?
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
STEP 01:/usr/my.cnf
の28行目をコメント化
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
STEP 02: sql_mode を手動で設定
mysql> SET GLOBAL sql_mode = '';
それが!!!
5.7.13(およびおそらく他の5.7バリアント)では、次のトリックが機能します。
my.cnf
:
sql_mode=ALLOW_INVALID_DATES
サーバーを再起動します。再起動したくない場合は、次のようにしてください。
set global sql_mode='ALLOW_INVALID_DATES'
その場合、mysqld
はそのすべてのデフォルトを忘れ、デフォルト構成の5.5のように動作します。