首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel database迁移多个数据库

Laravel database迁移多个数据库
EN

Stack Overflow用户
提问于 2017-01-26 04:14:54
回答 1查看 907关注 0票数 1

我正在用Laravels的迁移功能做一些测试。

我的配置中有两个数据库:mysqlappDbmysql是默认的。我在迁移目录中创建了两个目录:appDbcoreDb。我在appDb目录中为appDb创建了一个迁移,并在mysql数据库的coreDb目录中创建了一个迁移。

现在,要运行coreDb迁移,我只需使用以下命令

代码语言:javascript
复制
php artisan migrate --path database/migrations/coreDb

输出:

代码语言:javascript
复制
Migrated: 2017_01_25_195008_initial_core_database

它工作得很好,我在迁移中在coreDb下创建的表现在位于mysql配置中指定的数据库中。

现在,我想要进行我在appDb目录中指定的更改,但只在appDb配置中指定的数据库上进行。

代码语言:javascript
复制
php artisan migrate --database appDb --path database/migrations/appDb

它运行得很好:

代码语言:javascript
复制
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之后指定的数据库来存储有关迁移的信息,但实际上并没有在上执行迁移?

还有谁有过这方面的经验?对如何调试这个有什么想法?

我也尝试过这样做:

代码语言:javascript
复制
Schema::connection($this->getConnection())->dropIfExists('testAppDb');

但是,即使我有一个由--database参数指定的数据库,迁移类上的$this->getConnection()也会返回NULL

EN

回答 1

Stack Overflow用户

发布于 2020-01-26 18:06:27

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

示例:

代码语言:javascript
复制
Schema::connection('testAppDb')->dropIfExists('testAppDb');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41860856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档