insert into tablename (columnname) values ('');
エラーになり、データを登録できなかった。
MySQLを5.1から5.6にバージョンアップして気付いた現象。
調べて見ると5.5から5.6へのバージョンアップで
Integerタイプへのデータ登録についての設定が変更されたらしい。
my.cnfにsql_modeという設定項目が追加され、これによって
空文字 '' の取り扱いが変る。
sql_mode=STRICT_TRANS_TABLES
または、
sql_mode=STRICT_ALL_TABLES
のとき、空文字の登録はエラーとなり、
sql_mode=””
とすると、integer項目に空文字を登録しようとすると 0 が登録された。
結局
sql_mode=””
とはせずに、空文字 ’’ を登録しようとしているSQL文を修正した。
insert into tablename (columnname) values (0);
その後
mariadbでも同様の現象に遭遇したので、今度はmy.cnfを修正しようとした。
そして、my.cnf ではなく、替わりに /etc/my.cnf.d の mariadb-server.cnf に sql_mode=''を追加した。
[mariadb]
sql_mode=''
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image