我正在尝试删除自定义插件激活时创建的数据库表。我使用的代码基本相同,只是一个drop查询。但是,表格不会掉线!
我已确认以下内容:
正在调用查询并且是正确的(我使用'die($ 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' );
答案 0 :(得分:10)
使用$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 查询。