DBDelta不创建表,但返回Success

时间:2016-11-15 作者:user998163

我写了一个插件,它创建了一个激活表。在以前的WP版本中,它工作得很好。

现在没有了。这是我的功能:

function on_activation(){
            global $wpdb;
            $table_name = $wpdb->prefix."tc_competition_data_all_countries_and_fields";
            $sql = "CREATE TABLE $table_name (
              mail VARCHAR(55),
              id VARCHAR(255) NOT NULL,
              time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
              name VARCHAR(255) NOT NULL,
              stra VARCHAR(255) NOT NULL,
              ort VARCHAR(255) NOT NULL,
              uid VARCHAR(255) NOT NULL,
              msg VARCHAR(500) NOT NULL,
              meta1 VARCHAR(500) NOT NULL,
              meta2 VARCHAR(500) NOT NULL,
              UNIQUE KEY id (id)
            );";
            #dbDelta( $sql );
            $c  = dbDelta( $sql );
        }
它通过这个钩子得到证实:

register_activation_hook( __FILE__, array( \'tc_comp_form\', \'on_activation\' ) );
当我为$c, 它返回表已创建,但不存在。

可能是什么问题?

非常感谢!

1 个回复
最合适的回答,由SO网友:user998163 整理而成

问题出在这一行:

time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
我将其更改为:

time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

现在,它起作用了。

相关推荐

$wpdb->get_row返回什么?

由于插件中的调试和错误查找,我有一个简短的问题。$wpdb->;如果没有结果,返回get\\u row()?文件说明:(array|object|null|void) Database query result in format specified by $output or null on failure. 但当查看源代码时,它似乎返回了;null“;。。。如果您能快速提供帮助,我将不胜感激,我一直认为它会返回一个空数组,但我可能弄错了!