2016-12-14 22:27:58 2945次浏览 0条回答 0 悬赏 10 金钱

yii migrate --appconfig=@backend/config/main.php --migrationPath=@mdm/admin/migrations
求问 migrate 自定义配置文件无法成功 请问谁知道怎么回事
不带配置文件就没事


E:\YII\yii>yii migrate --appconfig=@backend/config/main.php --migrationPath=@mdm
/admin/migrations
PHP Fatal error:  Uncaught yii\base\UnknownPropertyException: Setting unknown pr
operty: yii\console\ErrorHandler::errorAction in E:\YII\yii\vendor\yiisoft\yii2\
base\Component.php:197
Stack trace:
#0 E:\YII\yii\vendor\yiisoft\yii2\BaseYii.php(521): yii\base\Component->__set('e
rrorAction', 'site/error')
#1 E:\YII\yii\vendor\yiisoft\yii2\base\Object.php(105): yii\BaseYii::configure(O
bject(yii\console\ErrorHandler), Array)
#2 [internal function]: yii\base\Object->__construct(Array)
#3 E:\YII\yii\vendor\yiisoft\yii2\di\Container.php(379): ReflectionClass->newIns
tanceArgs(Array)
#4 E:\YII\yii\vendor\yiisoft\yii2\di\Container.php(154): yii\di\Container->build
('yii\\console\\Err...', Array, Array)
#5 E:\YII\yii\vendor\yiisoft\yii2\BaseYii.php(344): yii\di\Container->get('yii\\
console\\Err...', Array, Array)
#6 E:\YII\yii\vendor\yiisoft\yii2\di\ServiceLocator.php(133): yii\BaseYii::creat
eObject(Array)
#7 E:\YII\yii\vendor\yiisoft\yii2\console\Application.php(210): yii\di\ServiceLo
cator->get('errorHandler')
#8 E:\YII\yii\vendor\yiisoft\ in E:\YII\yii\vendor\yiisoft\yii2\base\Component.p
hp on line 197

Fatal error: Uncaught yii\base\UnknownPropertyException: Setting unknown propert
y: yii\console\ErrorHandler::errorAction in E:\YII\yii\vendor\yiisoft\yii2\base\
Component.php:197
Stack trace:
#0 E:\YII\yii\vendor\yiisoft\yii2\BaseYii.php(521): yii\base\Component->__set('e
rrorAction', 'site/error')
#1 E:\YII\yii\vendor\yiisoft\yii2\base\Object.php(105): yii\BaseYii::configure(O
bject(yii\console\ErrorHandler), Array)
#2 [internal function]: yii\base\Object->__construct(Array)
#3 E:\YII\yii\vendor\yiisoft\yii2\di\Container.php(379): ReflectionClass->newIns
tanceArgs(Array)
#4 E:\YII\yii\vendor\yiisoft\yii2\di\Container.php(154): yii\di\Container->build
('yii\\console\\Err...', Array, Array)
#5 E:\YII\yii\vendor\yiisoft\yii2\BaseYii.php(344): yii\di\Container->get('yii\\
console\\Err...', Array, Array)
#6 E:\YII\yii\vendor\yiisoft\yii2\di\ServiceLocator.php(133): yii\BaseYii::creat
eObject(Array)
#7 E:\YII\yii\vendor\yiisoft\yii2\console\Application.php(210): yii\di\ServiceLo
cator->get('errorHandler')
#8 E:\YII\yii\vendor\yiisoft\ in E:\YII\yii\vendor\yiisoft\yii2\base\Component.p
hp on line 197

问题已解决,这个命令在执行自定义配置文件的时候不能直接使用当前应用的配置文件,那样会覆盖掉控制台的配置文件,正确的文件格式
文件为@backend/config/admin.php(自己创建)

<?php
$config['components']['adminDb'] = [
	        'class' => 'yii\db\Connection',
	        'dsn' => 'mysql:host=localhost;dbname=yii2advanced',
	        'username' => 'root',
	        'password' => 'root',
	        'charset' => 'utf8',
	        'tablePrefix' => 'eyun_admin_',
        ];
$config['params']['mdm.admin.configs'] = [
		'db' => 'adminDb',
		'cache' => [
			'class' => 'yii\caching\FileCache',
			'keyPrefix' => 'admin_',
			'cacheFileSuffix' => '.txt',
		],
    ];
return $config;

执行命令

yii migrate --appconfig=@backend/config/admin.php --migrationPath=@mdm/admin/migrations

附加:
这个问题的引发是因为想配置后台yii2-admin扩展的一些特殊数据表前缀为admin,所以使用了多库连接,但是配置了迁移数据要使用的db对象后确没有应用到表前缀
解决方法是修改迁移文件中的db对象

class m140602_111327_create_menu_table extends \yii\db\Migration
{

    /**
     * @inheritdoc
     */
    public function up()
    {
    	**$this->db = Configs::instance()->db;**//这里添加一段代码,使用配置中的数据库连接对象覆盖默认的db对象
        $menuTable = Configs::instance()->menuTable;
        $tableOptions = null;
        if ($this->db->driverName === 'mysql') {
            $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB';
        }

        $this->createTable($menuTable, [
            'id' => $this->primaryKey(),
            'name' => $this->string(128)->notNull(),
            'parent' => $this->integer(),
            'route' => $this->string(),
            'order' => $this->integer(),
            'data' => $this->binary(),
            "FOREIGN KEY ([[parent]]) REFERENCES {$menuTable}([[id]]) ON DELETE SET NULL ON UPDATE CASCADE",
        ], $tableOptions);
    }
    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
zone_g@163.com
见习主管

zone_g@163.com

注册时间:2015-04-11
最后登录:2019-05-25
在线时长:10小时22分
  • 粉丝2
  • 金钱174
  • 威望10
  • 积分374

热门问题