我有以下代码来创建表格:
$sql = "CREATE TABLE " . $table_name . "("
. "id mediumint(9) NOT NULL AUTO_INCREMENT, "
. "product_id mediumint(9) DEFAULT 0 NOT NULL,"
. "name_type mediumint(9) NOT NULL, "
. "name_key varchar(48) NOT NULL, "
. "valid_until datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, "
. "created_at datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, "
. "updated_at datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, "
. "UNIQUE KEY id (id)"
. ")" . $charset_collate. ";";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
它正在工作并创建表格。
现在我需要更新表并添加新列(sites_list):
$sql = "CREATE TABLE " . $table_name . "("
. "id mediumint(9) NOT NULL AUTO_INCREMENT, "
. "product_id mediumint(9) DEFAULT 0 NOT NULL,"
. "name_type mediumint(9) NOT NULL, "
. "name_key varchar(48) NOT NULL, "
. "sites_list longtext, "
. "valid_until datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, "
. "created_at datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, "
. "updated_at datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, "
. "UNIQUE KEY id (id)"
. ")" . $charset_collate. ";";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
但这不起作用。
我有一个错误:
WordPress database error: [Table 'table_name' already exists]
什么是错误的?
感谢。
答案 0 :(得分:0)
您错误地使用了dbDelta函数。
您必须在SQL语句中将每个字段放在自己的行上。
在PRIMARY KEY和主键定义之间必须有两个空格。
您必须使用关键字KEY而不是其同义词INDEX,并且您必须至少包含一个KEY。