Yii迁移,未创建表 [英] Yii Migration, Tables are not created

查看:53
本文介绍了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

在保险柜中,我写了这个查询

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:\wamp\www\yiisite\protected>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()的区别在于数据库逻辑 此处实现的将包含在数据库事务中.孩子 如果数据库逻辑,类可以实现此方法而不是 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.

这篇关于Yii迁移,未创建表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆