DB設計の変更により
テーブルのカラムの型変換をしようとしました。
public function up()
{
//
Schema::table('stations', function (Blueprint $table) {
$table->smallInteger('xxxxx')->nullable()->default(NULL)->change();
});
}
php artisan migrate
するとエラーが出ました。
Migrating: 2020_11_17_203408_modify20201117_stations_table
RuntimeException
Changing columns for table "stations" requires Doctrine DBAL. Please install the doctrine/dbal package.
おっといかん、doctrine/dbal を入れないまま change() してしまったか…
composerでインストールせねば
$ composer require doctrine/dbal
Using version ^3.0 for doctrine/dbal
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 4 installs, 0 updates, 0 removals
...
よし入った
改めてphp artisan migrate
Migrating: 2020_11_17_203408_modify20201117_stations_table
Error
Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found
ん?
え、今入れたよね?
あ、エラーの内容が最初と違う?
該当のファイルが存在しないとのことなので
vendor以下を確認してみる
$ ll vendor/doctrine/dbal/src/Driver/
...
-rw-rw-r--. 1 vagrant vagrant 168 Nov 15 18:20 Middleware.php
drwxrwxr-x. 4 vagrant vagrant 144 Nov 15 18:20 Mysqli
drwxrwxr-x. 3 vagrant vagrant 175 Nov 15 18:20 OCI8
drwxrwxr-x. 7 vagrant vagrant 153 Nov 15 18:20 PDO
-rw-rw-r--. 1 vagrant vagrant 2497 Nov 15 18:20 Result.php
-rw-rw-r--. 1 vagrant vagrant 397 Nov 15 18:20 ServerInfoAwareConnection.php
...
なるほど、PDO
はあるけどPDOMySql
はないな。
$ ll vendor/doctrine/dbal/src/Driver/PDO/
...
-rw-rw-r--. 1 vagrant vagrant 591 Nov 15 18:20 Exception.php
drwxrwxr-x. 2 vagrant vagrant 24 Nov 15 18:20 MySQL
drwxrwxr-x. 2 vagrant vagrant 24 Nov 15 18:20 OCI
drwxrwxr-x. 2 vagrant vagrant 24 Nov 15 18:20 PgSQL
...
PDO
ディレクトリの下にMySQL
があるな…
えーとつまり、バージョンが変わって、ディレクトリの構成が変更になったとかそういうことかな?
3.0系の構成を確認してみる
https://github.com/doctrine/dbal/tree/3.0.x/src/Driver
うん、インストールされているのはこの構成だ。
では前のバージョンは…
あっPDOMySqlさんいる
えーとつまり
-
composer require doctrine/dbal
だけでインストールすると、今は3.x系が入ってしまう - 3.x系は
Driver
ディレクトリの構成が変わっているので、migrateする時に2.x系にあったPDOMySql
がnotfoundになる
ということか
$ composer require "doctrine/dbal:2.*"
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
- Downgrading doctrine/dbal (3.0.0 => 2.12.1): Downloading (100%)
...
$ php artisan migrate
Migrating: 2020_11_17_203408_modify20201117_stations_table
Migrated: 2020_11_17_203408_modify20201117_stations_table (133.37ms)
doctrine/dbal をバージョン指定で入れ直し、無事migrateできました。
※バージョンによる今だけの一時的な現象だと思いますが、そこそこ迷走したので、誰かの手助けになれば。