問題描述
當我的插件被激活時,我正在關注 this 使我的插件 auto-create 成為一個表,但是所有的表 (整個數據庫) 都是 utf8_general_ci,新創建的表是 latin1_swedish_ci … 為什麼不是 UTF8?我以為這也是 utf8 默認,因為我有:
define('DB_COLLATE', 'utf8_general_ci');
在我的 wp-config.php … 我有一切完全一樣的提供的鏈接,除了功能名稱,我有不同的 SQL 字段… 如何使默認新創建的表 utf8?
這是我的功能:
function duende_install() {
global $wpdb;
global $duende_db_version;
$table_name = $wpdb->prefix . "duendes";
if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
$sql = "CREATE TABLE " . $table_name . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
shape tinytext NOT NULL,
integrity tinytext NOT NULL,
length tinytext NOT NULL,
drone tinytext NOT NULL,
wood tinytext NOT NULL,
mouth tinytext NOT NULL,
rim tinytext NOT NULL,
bell tinytext NOT NULL,
loud tinytext NOT NULL,
mass tinytext NOT NULL,
finish tinytext NOT NULL,
inlay tinytext NOT NULL,
price smallint DEFAULT '0' NOT NULL,
sold tinytext NOT NULL,
UNIQUE KEY id (id)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
add_option("duende_db_version", $duende_db_version);
}
}
謝謝
最佳解決方案
你沒有注意到,不僅對於數據庫進行排序規則,還包括表格甚至字段。
因此,從您的角度來看,我認為您的 CREATE TABLE 語句是”not complete” 。在使用 SQL 語句之前,請先學習語言。
請參閲 CREATE TABLE 語法 (MySQL 手冊) 。
特別是 table_options /table_option 和 [DEFAULT] COLLATE [=] collation_name 。
更新:
請參閲 WordPress Database Charset and Collation Configuration 中的 in-depth 描述,以及如何設置 wordpress 關於字符集和排序規則。
次佳解決方案
為了防止有人需要這樣做,您可以按照這種方式設置排序規則.UNIQUE KEY id (id)部分後面的行應如下所示:
) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;";
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。