LoginSignup
0
0

More than 1 year has passed since last update.

CakePHP4_migrationでdatetimeカラムが追加できない

Posted at

まえがき

CakePHPのmigrationを利用した際に発生したエラーの対処法となります。

バージョン

CakePHP4

手順

・Usersテーブルにmigrationでcreatedカラムを追加する

20210801024646_ChangeUsers.php
    public function change()
    {
        $table = $this->table('users');
        $table->addColumn('created', 'datetime');
        $table->update();
    }

※上記のmigrationファイルでmigrate実行するとエラーが発生
bin\cake migrations migrate

PDOException: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '0000-00-00 00:00:00' for column `proto_todo`.`users`.`created` at row 1 in C:\xampp\htdocs\cakephp_apps\todo\vendor\robmorgan\phinx\src\Phinx\Db\Adapter\PdoAdapter.php:194

設定情報はシンプルなものなのですが、何度実行しても失敗してしまいます。
原因を調査した結果、以下の内容に変更すると成功しました。

20210801024646_ChangeUsers.php
    public function change()
    {
        $table = $this->table('users');
        $table->addColumn('created', 'datetime', [
            'null' => true // NULLを許容
        ]);
        $table->update();
    }

bin\cake migrations migrate

原因

エラーが発生した原因としては、既にテーブル上に登録されているデータが悪さをしていたようでした。
addColumnsが処理される際、既存レコードのcreatedに対しては'0000-00-00 00:00:00'が登録される動きになるようです。
しかしcreatedカラムはnullを許容していなかった為エラーが発生してしまった様です。
上記を踏まえカラムをnull許容する事で正常にmigrationが行われました。

考えれば分かる事でした。。余計な時間を使ってしまった。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0