【发布时间】:2017-06-11 04:19:33
【问题描述】:
我正在使用 Laravel 迁移功能进行一些测试。
我的配置中有两个数据库,mysql 和 appDb。 mysql 是默认值。
我在迁移目录中创建了两个目录,
appDb 和 coreDb。我在appDb 目录中为appDb 创建了一个迁移,在coreDb 目录中为mysql 数据库创建了一个迁移。
现在,要运行 coreDb 迁移,我只需使用命令
php artisan migrate --path database/migrations/coreDb
输出:
Migrated: 2017_01_25_195008_initial_core_database
它工作正常,我在coreDb 下的迁移中创建的表现在位于mysql 配置中指定的数据库中。
现在我想做我在appDb 目录中指定的更改,但仅限于appDb 配置中指定的数据库。
php artisan migrate --database appDb --path database/migrations/appDb
运行良好:
Migration table created successfully.
Migrated: 2017_01_25_194957_initial_app_database
当我打开appDb 配置中指定的数据库时,它显示了迁移表,并显示它运行了2017_01_25_194957_initial_app_database 迁移。但是我在 2017_01_25_194957_initial_app_database 迁移中创建的表最终在另一个数据库中,该数据库在其迁移表中没有此迁移的记录。
好像是使用--database之后指定的数据库来存储迁移的信息,而不是实际执行迁移?
其他人有这方面的经验吗? 关于如何调试的想法?
我也尝试过这样做:
Schema::connection($this->getConnection())->dropIfExists('testAppDb');
但是迁移类上的$this->getConnection() 会返回NULL,即使我有一个由--database 参数指定的数据库。
【问题讨论】:
标签: php mysql laravel migration laravel-artisan