【问题标题】:Yii could not migrate my correct classYii 无法迁移我正确的类
【发布时间】:2014-04-06 08:39:18
【问题描述】:

我正在使用基于 v1.1.14 的 Yii。我正在编写函数来创建带有这些字段的数据库表。我的课没有任何问题,其他任何人都可以成功迁移,但我不能。 在使用ts 命名并配置main.php 以引入数据库后,我在迁移时遇到错误。 我的迁移课程是:

class m120509_224029_create_project_table extends CDbMigration
{
    public function up()
    {
        $this->createTable(
                 'tbl_project', 
                array(
                    'id' => 'pk',
                    'name' => 'string NOT NULL',
                    'description' => 'text NOT NULL',
                'create_time' => 'datetime DEFAULT NULL',
                'create_user_id' => 'int(11) DEFAULT NULL',
                'update_time' => 'datetime DEFAULT NULL',
                'update_user_id' => 'int(11) DEFAULT NULL',
             ), 

                 'ENGINE=InnoDB'
            );
    }

    public function down()
    {
        $this->dropTable('tbl_project');
    }
}

错误:

*** applying m140101_071345_tbl_project
    > create table tbl_project ...exception 'CDbException' with message 'CDbCommand failed to execute the SQL statement: CDbCommand failed to prepare the SQL statement: SQLSTATE[HY000]: General error: 1 near "ENGINE": syntax error. The SQL statement executed was: CREATE TABLE 'tbl_project' (
        "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL
) ENGINE=InnoDB' in /var/www/yii/framework/db/CDbCommand.php:358
Stack trace:
#0 /var/www/yii/framework/db/CDbCommand.php(1324): CDbCommand->execute()
#1 /var/www/yii/framework/db/CDbMigration.php(233): CDbCommand->createTable('tbl_project', Array, 'ENGINE=InnoDB')
#2 /var/www/ts/protected/migrations/m140101_071345_tbl_project.php(9): CDbMigration->createTable('tbl_project', Array, 'ENGINE=InnoDB')
#3 /var/www/yii/framework/cli/commands/MigrateCommand.php(385): m140101_071345_tbl_project->up()
#4 /var/www/yii/framework/cli/commands/MigrateCommand.php(109): MigrateCommand->migrateUp('m140101_071345_...')
#5 [internal function]: MigrateCommand->actionUp(Array)
#6 /var/www/yii/framework/console/CConsoleCommand.php(172): ReflectionMethod->invokeArgs(Object(MigrateCommand), Array)
#7 /var/www/yii/framework/console/CConsoleCommandRunner.php(71): CConsoleCommand->run(Array)
#8 /var/www/yii/framework/console/CConsoleApplication.php(92): CConsoleCommandRunner->run(Array)
#9 /var/www/yii/framework/base/CApplication.php(180): CConsoleApplication->processRequest()
#10 /var/www/yii/framework/yiic.php(33): CApplication->run()
#11 /var/www/ts/protected/yiic.php(7): require_once('/var/www/yii/fr...')

【问题讨论】:

    标签: php yii


    【解决方案1】:

    当您使用命令行工具应用迁移时,yii 使用配置文件console.php。只需将数据库配置从main.php 复制到console.php 看看是否能解决问题。

    【讨论】:

      【解决方案2】:

      或者,请确保您尚未创建迁移设置为通过其他方法创建的表。

      如果您已经通过 MySQL 或 phpMyAdmin 或其他方式创建了 tbl_project 表,请删除该表(如果它为空),然后重新运行 yii migrate 让您的迁移为您创建它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-07
        • 2021-09-08
        • 2018-03-04
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 2012-08-27
        相关资源
        最近更新 更多