2013-05-31 28 views
3

我試圖刪除我的自定義插件激活時創建的數據庫表。我基本上使用相同的代碼,只是一個下拉查詢。但是,桌子不會掉落!WordPress插件開發 - 插件停用後無法刪除數據庫表?

我已確認以下內容:

  • 的WP數據庫用戶有權限刪除表(我證實了通過運行在工作臺的SQL查詢)
  • 查詢被稱爲是正確的(我用「死($ SQL)以輸出查詢,然後運行它在工作臺)

    function my_plugin_remove_database() { 
        global $wpdb; 
        $table_name = $wpdb->prefix . "my_plugin_table"; 
        $sql = "DROP TABLE IF EXISTS $table_name;"; 
        //die($sql); 
        require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
        dbDelta($sql); 
        delete_option("my_plugin_db_version"); 
    } 
    register_deactivation_hook(__FILE__, 'my_plugin_remove_database'); 
    

回答

8

使用$wpdb->query(),而不是dbDelta()

function my_plugin_remove_database() { 
    global $wpdb; 
    $table_name = $wpdb->prefix . "my_plugin_table"; 
    $sql = "DROP TABLE IF EXISTS $table_name;"; 
    $wpdb->query($sql); 
    delete_option("my_plugin_db_version"); 
} 

register_deactivation_hook(__FILE__, 'my_plugin_remove_database'); 

dbDelta()不支持DROP TABLE查詢。

+0

太棒了!工作完美,沒有意識到dbDelta不支持Drop。謝謝! – JimmyJammed