小编Val*_*lik的帖子

当我必须默认使用它时,如何通过 Yii2 迁移创建新数据库?

我有一个任务,描述为“使用 Yii2 迁移创建新数据库,并默认使用它”。但我有一些勾结:我必须在我的main-local.php文件中设置至少一个默认数据库才能开始迁移。但我也必须通过初始迁移创建这个数据库。

return [
    'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=default_base',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ],
];
Run Code Online (Sandbox Code Playgroud)

我该如何处理?创建一个带有迁移的数据库并设置为默认数据库。

当我执行迁移时(迁移文件中有代码):

public function safeUp()
{
    $this->execute("CREATE DATABASE default_base");
}
Run Code Online (Sandbox Code Playgroud)

我有一个例外:

General error: 1007 Can't create database 'default_base'; database exists
Run Code Online (Sandbox Code Playgroud)

我意识到这是因为我已经在 phpmyadmin 中创建了 default_base(单击按钮“创建数据库”),并将其与我的main-local.php文件中的应用程序连接。但是我只需要在执行yii migrate.

UPD

我已经尝试了 rob006 推荐的方式,但出现连接错误

Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [1049] Unknown database 'default_base''
Run Code Online (Sandbox Code Playgroud)

我的 main-local.php 看起来就像 rob006 推荐的那样,但我仍然无法迁移。仅当我设置时才有效:

'preinstallDb' => [
                  'class'    => 'yii\db\Connection', …
Run Code Online (Sandbox Code Playgroud)

php mysql database-migration yii2 yii2-advanced-app

0
推荐指数
1
解决办法
1311
查看次数

标签 统计

database-migration ×1

mysql ×1

php ×1

yii2 ×1

yii2-advanced-app ×1