Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

[docker]のSQLでカラムのNULLの設定を後から変更したい。

解決したいこと

docker内のmySQLのテーブル内部のカラムのNULLを初期値をNOからYESに変更したいです。

どのようなコマンドで変更可能かお教えいただけると幸いです。

memoのNULLをNOからYESに変更したいです。

mysql> describe records;
+-------------+-----------------+------+-----+-------------------+-----------------------------------------------+
| Field       | Type            | Null | Key | Default           | Extra                                         |
+-------------+-----------------+------+-----+-------------------+-----------------------------------------------+
| id          | bigint unsigned | NO   | PRI | NULL              | auto_increment                                |
| user_id     | bigint unsigned | NO   | MUL | NULL              |                                               |
| profile_id  | bigint unsigned | NO   |     | NULL              |                                               |
| memo        | longtext        | NO   |     | NULL              |                                               |
| deleted_at  | timestamp       | YES  |     | NULL              |                                               |
| updated_at  | timestamp       | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP |
| created_at  | timestamp       | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED                             |
+-------------+-----------------+------+-----+-------------------+-----------------------------------------------+

色々、調べたのですが、わかりませんでした。
なので、もしかしたらphp artisan migrate をやり直してファイルの再作成が必要かな、と思いました。

アドバイスいただけると幸いです。

0

1Answer

Laravelでテーブルを作成しているなら、基本的にはマイグレーションで解決するのがよいと思います。
例えばmysqlのコンテナに入ってSQLで変更することも出来ますが、そうするとマイグレーションと実際のテーブル構造が一致しなくなります。

再作成するかどうかは状況によります。
開発中でデータが消えても構わないならrollbackするなどして再作成する方法があります。

一部のマイグレーション操作は破壊的です。つまり、データーが失われる可能性を持っています。

1Like

Comments

  1. @m1527092

    Questioner

    ご回答ありがとうございます。

    マイグレーションと実際のテーブル構造を考えるのをすっかり忘れておりました。
    ご指摘ありがとうごいます。

    今回の結論と致しましては、下記の記事を参考にマイグレーションファイルを編集しました。
    https://qiita.com/mdrq/items/f10e488caa4497eec79b

    change()メソッドを初めて利用したので、

    RuntimeException

    Changing columns for table "records" requires Doctrine DBAL. Please install the doctrine/dbal package.

    とエラーも出ましたが、composer require doctrine/dbal のコマンドで該当のパッケージをインストールしたら、無事マイグレーションファイルに変更を加えることができました。

    ありがとうございます。
    すっきり解決できました!

Your answer might help someone💌