Edited at

mysqlでAlter Tableがうまくいかなかった話

More than 1 year has passed since last update.


症状

nullを許可していないカラムにnullを許可したい。

で、以下のエラー


流したSQL

ALTER TABLE users MODIFY email varchar(255);


エラーメッセージ

Error Code: 1067. Invalid default value for 'created_at'

なんでwwwできないwwwwwwmywwwwsqlさんwwwww俺たちwwww

友達wwwwだろwwww?wwwwwww


前提

Field
Type
Null
Key
Default
Extra

id
int(10) unsigned
NO
PRI
NULL
auto_increment

name
varchar(255)
NO

NULL

email
varchar(255)
NO
UNI
NULL

password
varchar(60)
NO

NULL

remember_token
varchar(100)
YES

NULL

created_at
timestamp
NO

0000-00-00 00:00:00

updated_at
timestamp
NO

0000-00-00 00:00:00

confirmation_token
varchar(255)
YES

NULL

confirmed_at
timestamp
YES

NULL

confirmation_sent_at
timestamp
YES

NULL


で、こうやったら治った

SET sql_mode = '';

MySQLにはSTRICT_ALL_TABLESなるsqlモードがあり、それが原因らしい


参考

【MySQL】MySQL5.6ではsql_modeがSTRICT_TRANS_TABLESになる

https://stackoverflow.com/questions/36882149/error-1067-42000-invalid-default-value-for-created-at