在wordpress中更改表SQL命令

时间:2013-01-21 04:33:19

标签: mysql database wordpress-plugin alter-table

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

    $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命令,它工作! 所以,请帮帮我! :|

2 个答案:

答案 0 :(得分:3)

您的答案在法典中:

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

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

首先,你有关于字段名称的反引号。该规则也可能适用于表名,但我不确定。

此外,您正在尝试使用dbDelta,就好像您正在直接查询数据库一样。它不起作用。您需要使用CREATE TABLE为其提供完整的所需表格结构,就好像您每次创建新内容一样......

  

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

     

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

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

我想补充一点,你需要非常仔细地观察这个功能。它无声地失败,似乎没有做某些事情,比如删除索引 - 至少我遇到了很多麻烦。我不确定它是否会移动列来插入新的列或只是添加到最后。

答案 1 :(得分:0)

您只需执行以下SQL命令:

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