【问题标题】:Laravel artisan migrate multiple databaseLaravel artisan 迁移多个数据库
【发布时间】:2017-06-11 04:19:33
【问题描述】:

我正在使用 Laravel 迁移功能进行一些测试。

我的配置中有两个数据库,mysqlappDbmysql 是默认值。 我在迁移目录中创建了两个目录, appDbcoreDb。我在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


    【解决方案1】:

    您需要在Schema::connection() 中命名您要连接的实际数据库,以便执行特定数据库的迁移:

    示例:

    Schema::connection('testAppDb')->dropIfExists('testAppDb');
    

    【讨论】:

      猜你喜欢
      • 2016-12-09
      • 2014-06-05
      • 1970-01-01
      • 2018-11-01
      • 2018-04-04
      • 2016-03-30
      • 2013-10-28
      • 2014-10-05
      • 1970-01-01
      相关资源
      最近更新 更多