SQL 查询在 MySQL 中成功运行,但在 Yii 迁移中未成功运行



我是 yii 的新手,在执行迁移文件时发现了一个问题。以下是迁移代码(抱歉,字段名称是印度尼西亚语:

public function safeUp()
{
    $this->execute("
        ALTER TABLE `t_retur_pembelian` ALTER `kode_pembelian` DROP DEFAULT;
        ALTER TABLE `t_retur_pembelian` CHANGE COLUMN `kode_pembelian` `kode_post_pembelian` VARCHAR(16) NOT NULL AFTER `kode`, DROP FOREIGN KEY `FK_T_PEMBELIAN_T_RETUR_PEMBELIAN`, ADD CONSTRAINT `FK_t_retur_pembelian_t_post_pembelian` FOREIGN KEY (`kode_post_pembelian`) REFERENCES `t_post_pembelian` (`kode`) ON UPDATE NO ACTION ON DELETE NO ACTION;
    ");
}
public function safeDown()
{
    return false;
}

每次我尝试执行此迁移时,它总是失败并显示错误:

...Exception: CDbCommand failed to execute the SQL statement: SQLSTATE[42000] [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALTER TABLE `t_retur_pembelian` CHANGE COLUMN `kode_pembelian` `kode_post_pembel' at line 2. The SQL statement executed was: ALTER TABLE `t_retur_pembelian` ALTER `kode_pembelian` DROP DEFAULT;

但是当我在 mysql 中执行这两行 sql 查询时,它成功运行。迁移文件有什么问题?有人可以帮助我吗?我很感激。

尝试:

$this->execute("ALTER TABLE `t_retur_pembelian` ALTER `kode_pembelian` DROP DEFAULT");
$this->renameColumn('t_retur_pembelian', 'kode_pembelian', 'kode_post_pembelian VARCHAR(16) NOT NULL AFTER `kode`');
$this->dropForeignKey('FK_T_PEMBELIAN_T_RETUR_PEMBELIAN', 't_retur_pembelian');
$this->addForeignKey('FK_t_retur_pembelian_t_post_pembelian', 't_retur_pembelian', 'kode_post_pembelian', 't_post_pembelian', 'kode', 'NO ACTION', 'NO ACTION');

我不知道你的sql有什么问题,也许在一次执行中必须做一个动作,但我的代码必须工作。不要忘记return true;

相关内容

最新更新