Wordpress dbDelta无法运行

database plugins wordpress-plugin wordpress

3104 观看

5回复

459 作者的声誉

我正在为客户编写一个插件,虽然它通常运行良好,但我发现dbDelta不允许我在插件激活时创建我需要的表。

我正在运行以下代码来绑定激活函数:

register_activation_hook(__FILE__, 'adminInstallation');

这就是功能本身:

function adminInstallation(){
    global $wpdb;

    $objectEquipment = 'wp_object_equipment';
    $equipmentSQL = "CREATE TABLE ".$objectEquipment." (
                    id mediumint(9) NOT NULL AUTO_INCREMENT,
                    name tinytext NOT NULL
                );";

    require_once(ABSPATH.'wp-admin/includes/upgrade.php');
    $equipment = dbDelta($equipmentSQL);
}

一旦运行,我正在检查数据库,但没有添加任何表。试图转储错误只会导致Wordpress告诉我有意外输出,但它不会让我看到服务器返回的实际消息。这个问题一直困扰着我几个小时,我不能继续,直到它解决了。这里有没有人知道它为什么会这样做?

据我所知,所有代码都是有效的,这是我写的第三个插件。我甚至尝试使用我之前的代码,但这也没有用。

编辑:我尝试在插件激活后运行该函数并转储dbDelta响应。它报告表已经创建,但是,数据库中没有任何新内容。有任何想法吗?

提前致谢!//乔纳森

作者: Jonathan 的来源 发布者: 2011 年 8 月 29 日

回应 (5)


0

29 作者的声誉

我知道dbDelta非常讲究格式。我相信问题是你没有在数据库部分周围使用反引号(`)。请尝试以下方法。

另一方面,指定主键不会有什么坏处。

$equipmentSQL = "CREATE TABLE `".$objectEquipment."` (
  `id` mediumint(9) NOT NULL AUTO_INCREMENT,
  `name` tinytext NOT NULL,
  PRIMARY KEY (`id`)
);";
作者: snumb130 发布者: 19.10.2011 03:25

3

1888 作者的声誉

来自http://codex.wordpress.org/Creating_Tables_with_Plugins

  • 您必须在SQL语句中将每个字段放在自己的行上。
  • 您必须在单词PRIMARY KEY和主键定义之间有两个空格。
  • 您必须使用关键字KEY而不是其同义词INDEX,并且您必须至少包含一个KEY。
作者: Manuel Meurer 发布者: 16.03.2012 10:04

0

2822 作者的声誉

你可以试试这个功能

$table_name = "ratings";

$table_columns = "id INT(6) UNSIGNED AUTO_INCREMENT,
                    rate tinyint(1) NOT NULL,
                    ticket_id bigint(20) NOT NULL,
                    response_id bigint(20) NOT NULL,
                    created_at TIMESTAMP";

$table_keys = "PRIMARY KEY (id),
                    KEY ratings_rate (rate),
                    UNIQUE KEY ratings_response_id (response_id)";

create_table($table_name, $table_columns, $table_keys);
作者: motto 发布者: 31.03.2016 12:55

3

97 作者的声誉

您768,16 echo $wpdb->last_error;dbDelta电话后让您获得MySQL错误。

作者: Vlad Teodor 发布者: 02.09.2016 04:28

0

114 作者的声誉

我搜索并且dbDelta正在运行$ wpdb-> query($ sqlQuery); 用于自定义查询。

对于那些dbDelta不能正常使用的人

dbDelta($sql_query_to_create_table);

谢谢!有一个很好的代码

作者: Vishal Chanana 发布者: 13.05.2019 02:52
32x32