Yii2迁移问题
Yii2 migration problems
我是第一次使用 yii2,我想尝试 yii 迁移。
问题:
我用
创建了迁移文件
php yii migrate/create new_table
文件已创建。然后我将新的 table 详细信息输入到迁移文件中。
当我 运行 php yii migrate
我收到错误
异常 'ReflectionException' 消息 'Class db does not exist'<br>
在 /var/www/yii2.uz/vendor/yiisoft/yii2/di/Container.php:415
有什么问题吗?
我的console/config/main.php
:
<?php
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/../../common/config/main-local.php'),
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
return [
'id' => 'app-console',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'controllerNamespace' => 'console\controllers',
'components' => [
'log' => [
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
],
'params' => $params,
];
和我的迁移文件:
<?php use yii\db\Schema;
use yii\db\Migration;
class m150727_125205_new_table extends Migration
{
public function up()
{
$this->createTable('test',[
'id'=> Schema::TYPE_PK,
'name'=> Schema::TYPE_STRING
]);
}
public function down()
{
echo "m150727_125205_new_table cannot be reverted.\n";
return false;
}
缺少控制台的数据库组件设置,将其添加到 console/config/main-local.php
本地开发文件:
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=dbname',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
],
],
对于生产服务器,根据数据库设置更正此文件。
请注意 -local
个文件在 .gitignore
列表中。
如果您使用的是高级应用程序,则应将以下代码放入 environment/dev/common/main-local.php
以在您的应用程序中声明 db
组件:
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=dbname',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
],
],
如果你想让配置真正应用到高级模板中的应用程序,你应该运行./yii init
或php yii init
命令。
如果您使用的是基本应用程序,则应直接将其放入 common/main-local.php
。
重要的是将它放在公共下,而不仅仅是控制台下,因为您可能会在控制台和 Web 应用程序中使用相同的数据库。
我是第一次使用 yii2,我想尝试 yii 迁移。 问题: 我用
创建了迁移文件php yii migrate/create new_table
文件已创建。然后我将新的 table 详细信息输入到迁移文件中。
当我 运行 php yii migrate
我收到错误
异常 'ReflectionException' 消息 'Class db does not exist'<br>
在 /var/www/yii2.uz/vendor/yiisoft/yii2/di/Container.php:415
有什么问题吗?
我的console/config/main.php
:
<?php
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/../../common/config/main-local.php'),
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
return [
'id' => 'app-console',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'controllerNamespace' => 'console\controllers',
'components' => [
'log' => [
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
],
'params' => $params,
];
和我的迁移文件:
<?php use yii\db\Schema;
use yii\db\Migration;
class m150727_125205_new_table extends Migration
{
public function up()
{
$this->createTable('test',[
'id'=> Schema::TYPE_PK,
'name'=> Schema::TYPE_STRING
]);
}
public function down()
{
echo "m150727_125205_new_table cannot be reverted.\n";
return false;
}
缺少控制台的数据库组件设置,将其添加到 console/config/main-local.php
本地开发文件:
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=dbname',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
],
],
对于生产服务器,根据数据库设置更正此文件。
请注意 -local
个文件在 .gitignore
列表中。
如果您使用的是高级应用程序,则应将以下代码放入 environment/dev/common/main-local.php
以在您的应用程序中声明 db
组件:
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=dbname',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
],
],
如果你想让配置真正应用到高级模板中的应用程序,你应该运行./yii init
或php yii init
命令。
如果您使用的是基本应用程序,则应直接将其放入 common/main-local.php
。
重要的是将它放在公共下,而不仅仅是控制台下,因为您可能会在控制台和 Web 应用程序中使用相同的数据库。