我写了一个比之前更多的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();
}
我的错误
答案 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();
}