2013-01-21 15 views
0

由於插件數據庫的一些變化,我需要修改一個表來添加一些列,但即使函數正在運行,表格也不會被修改。下面是我寫改變wordpress中的SQL命令

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

+0

做u有使用當前用戶名和密碼 –

+0

我在本地主機上開發一個ALTER權限和我的帳戶是根。我使用XAMPP並且永遠不會更改mysql的密碼。 –

+1

您應該閱讀更多此文章:http://hungred.com/how-to/wordpress-dbdelta-function/。 dbDelta是一個挑剔的功能。:| –

回答

2

你的回答是法典:

  • 你必須把每場單獨一行在你的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,包括換行符。

我想補充一點,你需要非常仔細地觀察這個功能。它默默地失敗了,似乎沒有做某些事情,比如刪除索引 - 至少我遇到了很多麻煩。我不確定它是否會移動列來插入新列或添加到最後。

0

你一定要這樣執行SQL命令:

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