我正在尝试使用Yii进行迁移并在up()
方法中创建新表。
只要我不添加ENGINE=InnoDB
子句,它就可以正常工作。在那种情况下 - 它给了我一个错误near ENGINE
。
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');
}
我的Yii版本是1.1.12。 PHP 5.4.3,MySQL 5.5.24。
这是一些Yii的错误吗?
编辑(yii bug description):
*** applying m130208_133533_create_table_project
> create table tbl_project ...exception 'CDbException' with message 'CDbComm
and failed to execute the SQL statement: CDbCommand failed to prepare the SQL st
atement: 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,
"name" varchar(255) 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' in C:\wamp\yii\framework\db\CDbCommand.php:357
答案 0 :(得分:8)
我遇到了同样的问题,通过检查console.php&中数据库的配置解决了这个问题。 main.php是一样的
i.e 'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=databasename',
'emulatePrepare' => true,
'username' => 'root',
'password' => 'ur password',
'charset' => 'utf8',
),
并注释两个文件中的sqlite行
答案 1 :(得分:4)
使用" protected \ yiic \ migrate"作为控制台命令,使用protected \ config \ console.php,因此它的" db"应正确配置组件(已配置protected \ config \ main.php)。如果您收到InnoDB错误,则可能仍然为SQLite配置。
答案 2 :(得分:0)
尝试:
$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'
);
如果它不起作用,那么告诉我们MySql错误
答案 3 :(得分:0)
另一种方法是在.env文件中包括:
DB_ENGINE=InnoDB