所以它说我必须在主键之间放一个双倍空格。这是否意味着我必须在 PRIMARY 和 KEY 之间放置一个双倍空格。另外,将其放在主键的定义之间意味着什么?谢谢!
- 您必须在 SQL 语句中将每个字段放在其自己的行上。
- 单词 PRIMARY KEY 和主键的定义之间必须有两个空格。
- 必须使用关键字 KEY 而不是其同义词 INDEX,并且必须至少包含一个 KEY。
- 不得在字段名称周围使用任何撇号或反引号。
- 字段类型必须全部小写
- SQL 关键字(如 CREATE TABLE 和 UPDATE)必须为大写。
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL PRIMARY KEY AUTO_INCREMENT,
time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
name tinytext NOT NULL,
text text NOT NULL,
url varchar(55) DEFAULT '' NOT NULL,
UNIQUE KEY id (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
这是一个很好的问题,不,主键之间不需要额外的空格。dbDelta() 函数对于用作参数的 SQL 语句可能不稳定,因此不要像往常一样使用 PRIMARY KEY 声明。先声明主键(主键),然后声明定义(id)。应按如下方式添加主键:
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
name tinytext NOT NULL,
text text NOT NULL,
url varchar(55) DEFAULT '' NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );