【问题标题】:database migration is not working in yii数据库迁移在 yii 中不起作用
【发布时间】:2011-10-05 04:56:59
【问题描述】:

在 Yii 框架中,我使用迁移就像 ./yiic 迁移创建 tbl_demo 它制作了我输入 up 值的迁移文件

<?php

class m110714_094912_tbl_demo extends CDbMigration
{
  public function up()
  {
    $this-> createTable('{{tbl_demo}}', array(
      'id' => 'pk',
      'name' => 'VARCHAR \'80\' NOT NULL',
    ))
  }

  public function down()
  {
    echo "m110714_094912_tbl_demo does not support migration down.\n";
    return false;
  }

  /*
  // Use safeUp/safeDown to do migration with transaction
  public function safeUp()
  {
  }

  public function safeDown()
  {
  }
  */
}

输入后显示类似

的消息
New migration created successfully.

但是每当我检查 mysql 数据库时,都没有找到tbl_demo 的表。我还将 up 的所有值都放在 safeup 中,但没有产生任何结果。一切正常,但不知道为什么没有创建新表?请帮帮我

【问题讨论】:

    标签: php yii database-migration


    【解决方案1】:

    您应该转到命令行并调用yiic migrate up,它会询问您是否要应用 tbl_demo 迁移,当您输入“是”时,它将执行代码。 New migration created successfully. 消息是在您执行 yiic migrate create -something- 时出现的,而不是在您应用迁移时出现的。

    如果您想再次应用迁移,您应该删除 yiic 创建用于记录迁移的“迁移”数据库表中有关“tbl_demo”迁移的行。

    【讨论】:

    • 是的,我已经做到了..Yiic 向上迁移,它显示了类似迁移成功的消息。但是在数据库中没有找到新表。
    • 你还没有说你的数据库服务器是什么(mysql?)我会做 'name' => 'VARCHAR(80) NOT NULL' 这是正确的语法,如果它没有帮助我会去 CDbConnection 的 createTable 命令并查看 SQL 查询是如何构建的,然后使用 echo 转储它并在转储后退出。一旦你看到查询是什么,就用其他 sql 客户端自己尝试一下,看看查询本身是否一切正常。还要记住,迁移使用console.php 中的数据库配置,而不是main.php - 您的console.php 可能指向另一个数据库?
    • 谢谢哥们帮了我。实际上我还没有建立连接ib console.php。我已经连接到 main.php 中的数据库。所以真的很感谢你:)
    【解决方案2】:

    我自己解决了这个问题。

    答案是,默认的 /protected/config/console.php 开箱即用,配置为使用名为 testdrive.db 的 SQLite 数据库。您必须将其配置为与您的 MySQL 数据库通信。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-05
      • 2011-12-10
      • 2016-09-20
      • 2013-09-20
      • 2014-10-07
      • 1970-01-01
      • 2019-11-23
      • 2013-08-10
      相关资源
      最近更新 更多