У меня есть задача, которая описана как «Создание новой базы данных с миграцией Yii2 и использование по умолчанию».Но у меня есть некоторый сговор: мне нужно настроить хотя бы одну базу данных по умолчанию в моем файле main-local.php
, чтобы начать миграцию.Но я также должен создать эту базу данных с начальной миграцией.
return [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=default_base',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
];
Как я могу справиться с этим?Чтобы создать базу данных с миграцией и настроить ее по умолчанию.
Когда я выполняю свою миграцию (в моем файле миграции есть код):
public function safeUp()
{
$this->execute("CREATE DATABASE default_base");
}
У меня есть исключение:
General error: 1007 Can't create database 'default_base'; database exists
Я понимаю, что это потому, что я уже создал default_base в phpmyadmin (нажмите кнопку «создана база данных») и связал его с приложением в моем файле main-local.php
.Но мне нужно, чтобы эта база создавалась только когда я выполняю yii migrate
.
UPD
Я попробовал способ, рекомендованный rob006, но получаю ошибку соединения
Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [1049] Unknown database 'default_base''
Мой main-local.php выглядит так, как рекомендует именно rob006, но я все еще не могу мигрировать.Это работает, только если я установил:
'preinstallDb' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=already_exists_db',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
С уже существующей базой данных.Что я опять делаю не так?