我的插件应该在激活后创建两个表。但是只创建了第二个表。这是我的函数中创建表的部分。
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
global $wpdb;
$ml_wpid = $wpdb->prefix . "ml_wpid";
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS " . $ml_wpid . " (
`wp_id` mediumint(9) NOT NULL
`name` text NOT NULL
UNIQUE (`char_id`)
) $charset_collate;";
dbDelta( $sql );
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
global $wpdb;
$ml_char = $wpdb->prefix . "ml_char";
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS " . $ml_char . " (
`char_id` mediumint(9) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
UNIQUE (`char_id`)
) $charset_collate;";
dbDelta( $sql );
// starts output buffering
ob_start();
我觉得发生这种情况的原因是因为重新定义了$ sql变量。但是我已经尝试将第二个表的$ sql变量重命名为与$ sql2不同的东西,但没有发生任何不同。有什么建议?提前谢谢!
答案 0 :(得分:1)
有一个类似的问题,我的第一张桌子有效,但第二张没有。
function Create_Tables_Super_Farm()
{
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
// Calendar Events
$table_name = $wpdb->prefix . "calendarevents";
$table_name2 = $wpdb->prefix . "changelogs";
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
ID int(11) NOT NULL AUTO_INCREMENT,
timestamp datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
TypeID int(11) NOT NULL,
CustomerID int(11) NOT NULL,
SeedID int(11) NOT NULL,
Date datetime NOT NULL,
Title varchar(250) NOT NULL,
Description varchar(500) DEFAULT NULL,
PRIMARY KEY (ID),
UNIQUE KEY ID_UNIQUE (ID)
) $charset_collate ;";
$sql2 = "CREATE TABLE IF NOT EXISTS $table_name2 (
ID int(11) NOT NULL AUTO_INCREMENT,
timestamp datetime DEFAULT CURRENT_TIMESTAMP,
EmployeeID int(11) DEFAULT NULL,
TableID int(11) DEFAULT NULL,
Table varchar(500) DEFAULT NULL,
Field varchar(500) DEFAULT NULL,
Before varchar(5000) DEFAULT NULL,
After varchar(5000) DEFAULT NULL,
PRIMARY KEY (ID),
UNIQUE KEY ID_UNIQUE (ID)
) $charset_collate ;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
dbDelta( $sql2 );
}
尝试删除“`”char我在做之前无法得到任何东西。 覆盖$ sql变量不应该导致问题。最好的我可以告诉dbDelta非常挑剔,我错过了一个空间或什么的。到目前为止找不到任何帮助会很棒。