0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CodeIgniter4 Shield のマイグレーションが適用されない問題と解決策

Posted at

はじめに

CodeIgniter4 で Shield を導入する際、マイグレーションが適用されず、settings テーブルが作成されない問題に直面しました。本記事では、その原因と解決策を共有します。


発生した問題

php spark migrate:status を実行すると、以下のように ShieldSettings のマイグレーションが認識されているにも関わらず、適用されていない状態が続きました。

$ php spark migrate:status

+----------------------+-------------------+---------------------+----------+--------+--------+
| 名前空間             | バージョン        | ファイル名          | グループ | 移行日 | バッチ |
+----------------------+-------------------+---------------------+----------+--------+--------+
| CodeIgniter\Shield   | 2020-12-28-223112 | create_auth_tables  | ---      | ---    | ---    |
| CodeIgniter\Settings | 2021-07-04-041948 | CreateSettingsTable | ---      | ---    | ---    |
| CodeIgniter\Settings | 2021-11-14-143905 | AddContextColumn    | ---      | ---    | ---    |
+----------------------+-------------------+---------------------+----------+--------+--------+

マイグレーションを適用しようとしても、特にエラーは発生せず マイグレーションが完了しました と表示されるものの、データベースには何も適用されていない状態でした。


原因

原因は Myth/Auth がインストールされていたこと でした。

CodeIgniter 4 では Myth/AuthShield はどちらも認証ライブラリですが、それぞれ users テーブルや auth_* 系のテーブルを作成するため、競合が発生します。

Myth/Auth のマイグレーションが適用されていると Shield のマイグレーションが適用されないケースがあるため、Myth/Auth を削除することで Shield のマイグレーションが正常に適用されるようになりました。


解決策

1. Myth/Auth がインストールされているか確認

$ composer show | grep myth/auth

上記のコマンドで myth/auth が表示される場合、インストールされています。

2. Myth/Auth をアンインストール

$ composer remove myth/auth

3. マイグレーションのリセット

既存のマイグレーションをリセットします。

$ php spark migrate:reset

4. Shield のマイグレーションを適用

$ php spark migrate --namespace CodeIgniter\Shield
$ php spark migrate --namespace CodeIgniter\Settings

これで、ShieldSettings のマイグレーションが正常に適用され、settings テーブルも作成されるはずです。


おわりに

同様の問題に直面している方の参考になれば幸いです。Myth/AuthShield の競合に注意し、適切なマイグレーションの適用を行ってください。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?