MySQLでboolean NOT NULLカラム追加は既存行に暗黙0が入る
MySQL
マイグレーション
DB
MySQLではbooleanは実体TINYINT(1)。既存行があるテーブルにALTER TABLE ... ADD COLUMN x boolean NOT NULL(DEFAULTなし)を実行しても、既存行には数値型の暗黙値(0=false)が入るためDDLは適用可能。PostgreSQL感覚だと「DEFAULTなしNOT NULL追加はデプロイ不能」と誤解しがちだがMySQLでは違う。ただし追加後のINSERTで値を省略するとstrict modeで「Field doesn't have a default value」になり得るため、アプリ側で明示的に値を渡す。