Mysql alter table添加重复名称错误

时间:2014-01-04 16:59:47

标签: php mysql sql wordpress

我写了一个比之前更多的wp插件 我尝试这个插件更新 当前更新使用alter table sql查询 但我得到WordPress数据库错误:

$abouts_table_name = $wpdb->prefix . $this->abouts_content_table;
$sql = "CREATE TABLE IF NOT EXISTS {$abouts_table_name} (
            id INT(11) NOT NULL AUTO_INCREMENT,
            $this->abouts_contents TEXT,
            PRIMARY KEY(id)
            )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";

dbDelta($sql);

$alter_sql = "ALTER TABLE wp_about_years_content ADD  year_id INT NOT NULL";
try {
    $alter_sql = "ALTER TABLE wp_about_years_content ADD  year_id INT NOT NULL";
    if (!$wpdb->query($alter_sql)) {
        throw new Exception("tablo zaten var");
    }
} catch (Exception $exc) {
    echo $exc->getMessage();
}

我的错误

enter image description here

1 个答案:

答案 0 :(得分:0)

我不明白你事后添加列的理由。但请确保将列添加到之前创建的同一个表中,方法是将alter脚本更改为动态调用表名,就像在create语句中一样。

然后没有理由将$alter_sql设置两次。

你的代码看起来应该是这样的。请原谅我的代码如果不正确的PHP技能非常生锈。

$abouts_table_name = $wpdb->prefix . $this->abouts_content_table;
$sql = "CREATE TABLE IF NOT EXISTS {$abouts_table_name} (
            id INT(11) NOT NULL AUTO_INCREMENT,
            $this->abouts_contents TEXT,
            PRIMARY KEY(id)
            )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";

dbDelta($sql);

try {
    $alter_sql = "ALTER TABLE {$abouts_table_name} ADD  year_id INT NOT NULL";
    if (!$wpdb->query($alter_sql)) {
        throw new Exception("tablo zaten var");
    }
} catch (Exception $exc) {
    echo $exc->getMessage();
}