Yii 迁移,不创建表

2022-01-04 00:00:00 php yii

我是 Yii 的新手(仍在学习)我正在学习一本书教程在这里,我按照书中写的那样创建了一个新的迁移

I am new to Yii(Still Learning) I am following a book tutorial here I did as it was written in the book created a new migrate

yiic migrate create create_issue_user_and_assignment_tables

在safeup中我写了这个查询

and in safeup I wrote this query

$this->createTable('tbl_issue', array(
'id' => 'pk',
'name' => 'string NOT NULL',
'description' => 'text',
'project_id' => 'int(11) DEFAULT NULL',
'type_id' => 'int(11) DEFAULT NULL',
'status_id' => 'int(11) DEFAULT NULL',
'owner_id' => 'int(11) DEFAULT NULL',
'requester_id' => 'int(11) DEFAULT 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');
//create the user table
$this->createTable('tbl_user', array(
'id' => 'pk',
'username' => 'string NOT NULL',
'email' => 'string NOT NULL',
'password' => 'string NOT NULL',
'last_login_time' => 'datetime DEFAULT 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');

这在 safeDown() 中

and this in safeDown()

$this->dropTable('tbl_issue');
$this->dropTable('tbl_user');

然后运行它并得到以下消息

then run it and got the following msg

D:wampwwwyiisiteprotected>yiic migrate
PHP Deprecated:  Directive 'register_globals' is deprecated in PHP 5.3 and great
er in Unknown on line 0

Deprecated: Directive 'register_globals' is deprecated in PHP 5.3 and greater in
 Unknown on line 0

Yii Migration Tool v1.0 (based on Yii v1.1.13)

Total 1 new migration to be applied:
    m130703_085302_create_issue_user_and_assignment_tables

Apply the above migration? (yes|no) [no]:yes
*** applying m130703_085302_create_issue_user_and_assignment_tables
*** applied m130703_085302_create_issue_user_and_assignment_tables (time: 0.042s
)


Migrated up successfully.

现在的问题是没有在数据库中创建表,这可能是因为 register_globals 已被弃用,但我不知道该怎么做,连接参数正确并且在表中插入了一条记录 tbl_migration

now the problem is that tables are not created in the database it may be because of the msg that register_globals is deprecated but I am not sure what to do, connection parameters are correct and a record was inserted in the table tbl_migration

m130703_085302_create_issue_user_and_assignment_ta...   1372842220

但没有创建新表.

推荐答案

创建表通常不需要事务

<?php
class m130630_124600_some_description_name extends CDbMigration
{
    public function up(){
        //upcode example create the session table
        $this->createTable('session',[
             'id' => "varchar(40) NOT NULL",
             'expire' => "int(12)",
             'data' => "blob",
        ]);
        $this->addPrimaryKey('idx','session','id');
    }
    public function down(){
       // downcode (undo the up code) example: drop session table
       $this->dropTable('session');
    }
}

<小时>

如果需要交易

遵循safeUp的评论:

这个方法包含了应用这个时要执行的逻辑移民.此方法与 up() 的不同之处在于 DB 逻辑这里实现的将包含在一个 DB 事务中.孩子如果数据库逻辑,类可以实现此方法而不是 up()需要在一个事务中.

This method contains the logic to be executed when applying this migration. This method differs from up() in that the DB logic implemented here will be enclosed within a DB transaction. Child classes may implement this method instead of up() if the DB logic needs to be within a transaction.

相关文章