插件没有创建第二个表激活

问题描述:

我为我的插件创建了第一个表,并且在添加更多功能之后,我意识到我需要为其他类型的数据添加第二个表。插件没有创建第二个表激活

故障排除的努力到目前为止还没有使用相同的变量名称为SQL数据,运行dbDelta()都作为组合的SQL VAR(的$setup_sql .= '...'代替$setup_sql = '...'),并运行代码为解决与dbDelta(的问题)一个简单的功能,而不是一个班级。

我甚至试过用不同的名字运行一个表创建,只是为了检查代码的工作情况,而它仍然没有创建另一个表。

我已经有没有错误贯穿所有这些测试,并且出于所有意图和目的,似乎Wordpress不允许插件创建多个表格 - 但我知道情况并非如此。

class activation_setup { 
    public static function wpd_activate() { 
     global $wpdb; 
     $charset_collate = $wpdb->get_charset_collate(); 
     require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 

     $wpd_table_trig = $wpdb->prefix . 'wpd_triggers'; 
     $setup_sql_trig = "CREATE TABLE $wpd_table_trig (
      id int(11) NOT NULL AUTO_INCREMENT, 
      trigger varchar(255) DEFAULT NULL, 
      popup varchar(255) DEFAULT NULL, 
      notify varchar(255) DEFAULT NULL, 
      UNIQUE KEY id (id) 
     ) $charset_collate;"; 
     dbDelta($setup_sql_trig); 

     $wpd_table_sel = $wpdb->prefix . 'wpd_selections'; 
     $setup_sql_sel = "CREATE TABLE $wpd_table_sel (
      id int(11) NOT NULL AUTO_INCREMENT, 
      selected varchar(255) DEFAULT NULL, 
      session varchar(255) DEFAULT NULL, 
      ip varchar(255) DEFAULT NULL, 
      page varchar(255) DEFAULT NULL, 
      date varchar(255) DEFAULT NULL, 
      UNIQUE KEY id (id) 
     ) $charset_collate;"; 
     dbDelta($setup_sql_sel); 

     update_option('wpd_activated',true); 
    } 
} 
$activation_setup = new activation_setup(); 
register_activation_hook(__FILE__ , array($activation_setup, 'wpd_activate')); 

我会绝对坚果试图找出为什么这个代码不添加第二台,甚至剔除重复表的代码,并用不同的表名运行它之后。

我已经经历了大量的博客文章和堆栈的答案试图达到它的底部。

任何帮助将是太棒了。

问题与表定义。 你在表中定义了trigger它也是mysql的关键字。
这是问题所在。
您的问题将通过此更改解决。
写字段名称时使用“`”。

class activation_setup { 
    public static function wpd_activate() { 
     global $wpdb; 
     $charset_collate = $wpdb->get_charset_collate(); 
     require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 

     $wpd_table_trig = $wpdb->prefix . 'wpd_triggers'; 
     $setup_sql_trig = "CREATE TABLE $wpd_table_trig (
      `id` int(11) NOT NULL AUTO_INCREMENT, 
      `trigger` varchar(255) DEFAULT NULL, 
      `popup` varchar(255) DEFAULT NULL, 
      `notify` varchar(255) DEFAULT NULL, 
      UNIQUE KEY id (id) 
     ) $charset_collate;"; 
     dbDelta($setup_sql_trig); 

     $wpd_table_sel = $wpdb->prefix . 'wpd_selections'; 
     $setup_sql_sel = "CREATE TABLE $wpd_table_sel (
      `id` int(11) NOT NULL AUTO_INCREMENT, 
      `selected` varchar(255) DEFAULT NULL, 
      `session` varchar(255) DEFAULT NULL, 
      `ip` varchar(255) DEFAULT NULL, 
      `page` varchar(255) DEFAULT NULL, 
      `date` varchar(255) DEFAULT NULL, 
      UNIQUE KEY id (id) 
     ) $charset_collate;"; 
     dbDelta($setup_sql_sel); 


    } 
} 
$activation_setup = new activation_setup(); 
register_activation_hook(__FILE__ , array($activation_setup, 'wpd_activate')); 

如果你想确保问题是从触发字段的触发然后删除“`”,然后再次激活插件。

+0

**你的先生真是太棒了**我不能告诉你我已经经历了多少次这样的代码 - 还有无数其他的例子 - 一个一个数字,从来没有想过检查这样的实际名称。为我的Sql代码中不使用蜱做好准备。 – RalphTheWonderLlama