2016-12-24 34 views
0

我的插件应该在激活时创建两个表。但是只有第二个表格被创建。这是我创建表的函数的一部分。WPDB:无法用插件安装创建多个数据库表

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不同的东西,但没有发生任何不同。有什么建议么?提前致谢!

回答

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); 
} 

尝试删除“`”字符的我没有得到任何工作之前,我这样做。 覆盖$ sql变量不应该导致问题。最好我可以告诉dbDelta是非常挑剔的,我错过了一个空间或东西。到目前为止找不到它,任何帮助都会很棒。