【问题标题】:Alter table SQL command in wordpress在 wordpress 中更改表 SQL 命令
【发布时间】:2013-01-04 03:37:48
【问题描述】:

由于我的插件数据库发生了一些变化,我需要更改一个表以添加一些列,但即使该函数正在运行,该表也不会更改。这是我写的函数

    $sql = "ALTER TABLE `wp_tnt_videos` ADD `date_created` INT NOT NULL DEFAULT '0' AFTER `video_order`, ADD `date_modified` INT NOT NULL DEFAULT '0' AFTER  `date_created`, ADD `user_id` INT NOT NULL DEFAULT '0' AFTER `date_modified`;";

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);

我读到这个:http://hungred.com/how-to/wordpress-dbdelta-function/ 并试图仔细检查 sql 命令。我也在 mysql 中运行那个 sql 命令并且它工作! 所以,请帮助我! :|

【问题讨论】:

  • 你是否有使用当前密码和用户名的更改权限
  • 我正在本地主机上开发,我的帐户是 root。我使用 XAMPP 并且从不更改 mysql 的密码。
  • 您应该阅读更多这篇文章:hungred.com/how-to/wordpress-dbdelta-function。 dbDelta 是一个挑剔的函数。 :|
  • 看来你不应该使用没有文档的函数。
  • 不,有这方面的文件:codex.wordpress.org/…。但还不够:|

标签: mysql database wordpress alter-table


【解决方案1】:

您的答案在法典中:

  • 您必须在 SQL 语句中将每个字段放在自己的行中。
  • 在 PRIMARY KEY 和定义之间必须有两个空格 你的主键。
  • 您必须使用关键字 KEY 而不是其同义词 INDEX,并且您必须至少包含一个 KEY。
  • 您不得在字段名称周围使用任何撇号或反引号。

http://codex.wordpress.org/Creating_Tables_with_Plugins#Adding_an_Upgrade_Function

首先,您在字段名称周围有反引号。该规则可能也适用于表名,但我不确定。

此外,您正在尝试使用dbDelta,就好像您正在对数据库进行直接查询一样。它不是那样工作的。您需要使用CREATE TABLE 为其提供完整的所需表结构,就好像您每次都在创建新的并且...

dbDelta 函数检查当前表结构,比较它 到所需的表结构,并添加或修改表 如有必要,因此更新非常方便(请参阅 wp-admin/upgrade-schema.php 获取更多关于如何使用 dbDelta 的示例)。

http://codex.wordpress.org/Creating_Tables_with_Plugins#Adding_an_Upgrade_Function

你不要给它ALTER TABLE 命令或者只给它你想要改变的部分。它不是那种通用的数据库更改工具。而且,正如已经提到的,它非常挑剔。完全按照示例中的格式格式化您的 SQL,包括换行符。

我要补充一点,您需要非常仔细地观察此功能。它默默地失败了,似乎不应该做什么,比如删除索引——至少我在这方面遇到了很多麻烦。我不确定它是否会移动列以插入新列或只是添加到末尾。

【讨论】:

    【解决方案2】:

    你只需要像这样执行你的 SQL 命令:

    global $wpdb;
    $wpdb->query($sql);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-13
      • 2016-04-21
      • 2015-12-02
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      相关资源
      最近更新 更多