
change()関数などを含むデータベースを修正するパッチファイル作成後、
Changing columns for table "○○" requires Doctrine DBAL. Please install the doctrine/dbal package.
のエラーが出る場合。
composer require "doctrine/dbal:2.*
コマンドを叩くと解決する。
エラー内容とか
マイグレート後、ドクトリンが必須だ!とか言いやがる。
root@8bcb338cb044:/var/www/ecapp# php artisan migrate
Migrating: 2022_06_11_151715_change_users_to_icon_table_defaultvalue
RuntimeException
Changing columns for table "users" requires Doctrine DBAL. Please install the doctrine/dbal package.
at vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/ChangeColumn.php:30
26? */
27? public static function compile($grammar, Blueprint $blueprint, Fluent $command, Connection $connection)
28? {
29? if (! $connection->isDoctrineAvailable()) {
? 30? throw new RuntimeException(sprintf(
31? 'Changing columns for table "%s" requires Doctrine DBAL. Please install the doctrine/dbal package.',
32? $blueprint->getTable()
33? ));
34? }
+6 vendor frames
7 database/migrations/2022_06_11_151715_change_users_to_icon_table_defaultvalue.php:18
Illuminate\Support\Facades\Facade::__callStatic("table")
+21 vendor frames
29 artisan:37
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)
なんで初めから入ってへんねんカス
解決策
Laravel6や8ならdoctrineのdbal:2をインストールすると解決する。
7は使ったことないけど、一緒のはず。
9はわからん。
アプリのプロジェクトディレクトリ直下で、
composer require "doctrine/dbal:2.*
を叩く。
Dockerを使っているなら、コンテナの中のプロジェクトディレクトリ直下でたたく。
これでphp artisan migrateが通るようになる。
バージョン指定せずに最新版入れちゃった愚か者へ
はい残念!!動きませんwwwwww うっぴょーーーーwwwwwwwww
バージョン指定せずに入れると、最新版?(3?)が入ってしまいコマンドが通らないままになる。
もし動かないバージョンを入れてしまった場合は、プロジェクトディレクトリ直下のvenderを丸ごと削除
rm -rf vendor/
composer.jsonのドクトリンの行を丸ごと削除
vim composer.json
composer.lockも消す
rm -rf composer.lock
コンポーザーを入れ直す
composer install
↑これを叩くとcomposer.jsonに書いているパッケージがインストールされる
故にベンダーディレクトリの中にライブラリが入ってくる
改めてバージョン2をインストール
composer require "doctrine/dbal:2.*"
ドクトリンを入れたらサイトがまるごと表示されなくなった場合
ブラウザ上のエラー
include(/var/www/ecapp02/vendor/composer/../doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Rules.php): failed to open stream: No such file or directory
アプリケーションフォルダ直下のvenderを丸ごと削除
rm -rf vendor/
composer.jsonのドクトリンの行を丸ごと削除
vim composer.json
composer.lockも消す
rm -rf composer.lock
コンポーザーを入れ直す
composer install
とりあえず動かんくなったら元に戻したらいいって話。
ライブラリのバージョンの相性によるトラブルはだいたいこれで解消できるらしい。
参考にしたサイト
【Laravel】composer require doctrine/dbalを実行した後にエラーがでる時の対処法 | eclairのブログ