Php Mysql alter table添加重复名称错误
我比以前写了一个wp插件。Php Mysql alter table添加重复名称错误,php,mysql,sql,wordpress,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,
我尝试此插件更新。
当前更新使用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();
}
我的错误
我不明白你为什么要在事实之后添加列。但是,通过更改
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();
}
这看起来是个坏主意。