我正在用Laravels的迁移功能做一些测试。
我的配置中有两个数据库:mysql和appDb。mysql是默认的。我在迁移目录中创建了两个目录:appDb和coreDb。我在appDb目录中为appDb创建了一个迁移,并在mysql数据库的coreDb目录中创建了一个迁移。
现在,要运行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');但是,即使我有一个由--database参数指定的数据库,迁移类上的$this->getConnection()也会返回NULL。
发布于 2020-01-26 18:06:27
您需要在Schema::connection()中命名要连接到的实际数据库,以便为特定数据库执行迁移:
示例:
Schema::connection('testAppDb')->dropIfExists('testAppDb');https://stackoverflow.com/questions/41860856
复制相似问题