【问题标题】:Yii Migrations - Down step not working as expectedYii Migrations - 下降步骤未按预期工作
【发布时间】:2014-01-15 19:11:45
【问题描述】:

我正在使用 Yii 1.1.x - 我已经设置了一个迁移以将一行插入到一个表中 - 这工作正常,但是我遇到了 down() 方法的问题,似乎失败了

public function down()
{
    //echo "m140115_100413_add_national_text_key_to_national_prizes_config_table does not support migration down.\n";

    $this->delete(
            'national_prizes_config',"key = 'nationaltext'"
    );

    return false;
}

基本上我只是想简单地删除表中键为“nationaltext”的行 - 运行 Yii 向下迁移命令时,控制台日志中出现错误。

我收到以下错误(SQL 相关)

You have an error in your syntax...
DELETE FROM national_prizes_config WHERE key = 'nationaltext''

我不明白为什么它有 2 个撇号? 另外——为什么 Yii 会回应'不支持向下迁移,我做错了什么?

【问题讨论】:

    标签: yii frameworks database-migration


    【解决方案1】:

    你为什么不试试这个 -

     $this->delete(
            'national_prizes_config','`key` = :val',array(':val'=>'nationaltext')
    );
    

    如果您可以将键用作索引,则可以使用此方法

    $this->dropIndex('nationaltext','national_prizes_config');
    

    【讨论】:

    • 两者都很好——难道我的“key”列是MYSQL保留字吗?
    • 如果您想使用 delete,请尝试更新的答案 - 它与此处的文档一致 - yiiapi.com/CDbMigration#delete-detail
    • 感谢您修改带有反引号的语句
    • 不客气,这是一个微小但重要的细节 - 无论如何祝你学习 Yii 好运,我在学习任何其他 PHP 框架时从未有过这样的乐趣:)
    【解决方案2】:

    试试这个

    $value='nationaltext';
    

    $this->delete(
                'national_prizes_config',"key = $value"
        );
    

    【讨论】:

    • 奇怪...如果我使用 'id' 列并且只是针对它而不是上面的代码工作,但是如果我使用 'key' 列它会出错...真的很奇怪.. 我会继续狂欢
    • 好的 - 问题基本上是我需要反引号,因为键列是保留字,有谁知道我是否可以在 delete() 中添加反引号
    • 我认为 dropIndex 仅在将列设置为索引时才有效(在这种情况下它不是 - 而且我还不允许在工作中弄乱索引和东西)谢谢,虽然真的很感激答案! :) 还在学习 Yii 一点一点的捡起来
    • 好吧,我的评论不知何故从中间消失了,但没问题,让我们一起学习;)
    • @themosquitokiller 我对你的评论一无所知。我没有删除它。干杯:)
    【解决方案3】:

    这成功了 - 感谢原始答案..

        $this->delete(
           'national_prizes_config','`key` = :val',array(':val'=>'nationaltext')
    );
    

    【讨论】:

    • 这不是我的答案吗?再写一遍有什么意义? :p
    • 我添加了反引号,这就是我要给你的所有东西,别担心:)
    • 和我 +1 的细节 :)
    • 如果可以的话,我会给你+10 :)
    猜你喜欢
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多