DBDelta没有做到它所说的

时间:2013-05-29 作者:mihok

好吧,我一定读过数百个wordpress的答案,谷歌的搜索结果等,不同的人在dbDelta为他们的插件创建表时遇到了麻烦。

我尝试了许多基于这些答案的变体,看看它是否能起到作用,但下面的代码似乎无法创建表格。尽管dbDelta返回的数据表示它创建了表,但如果有任何人能给我任何帮助或看到我所犯的错误,我将非常感激。

function activation() {
  // Install table
  global $wpdb;

  $sql = "CREATE TABLE ".$this->table_name." (
    id MEDIUMINT(9) NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (id),
      user_id BIGINT(20) NOT NULL UNSIGNED,
      KEY user_id (user_id),
        created DATETIME DEFAULT \'0000-00-00 00:00:00\'  NOT NULL,
        url VARCHAR(55) DEFAULT \'\' NOT NULL,
  );";

  var_dump($sql);

  require_once( ABSPATH . \'wp-admin/includes/upgrade.php\' );
  var_dump(dbDelta( $sql ));

  add_option( "invite_db_version", $invite_db_version );
}
此函数已注册到插件类构造函数中的激活挂钩register_activation_hook( __FILE__, array( &$this, \'activation\' ) );

1 个回复
SO网友:Otto

您似乎在评论中回答了自己的问题,但是的,SQL是错误的。键必须位于语句末尾,列定义之后。

结束

相关推荐

插件卸载:为什么在$wpdb->查询($DROP_SQL)之后运行DBDelta

我正在读专业的wordpress。他们卸载插件的代码是//build our query to delete our custom table $sql = \"DROP TABLE \" . $table_name . \";\"; //execute the query deleting the table $wpdb->query($sql); require_once(ABSPATH .’wp-admin/includes/upgrade.php’)