MySQL出現(xiàn)1366錯誤的原因是因為字符集不匹配。如果在使用MySQL時遇到了這個錯誤,可以嘗試修改表或列的字符集,或者修改連接的字符集。
具體來說,可以在創(chuàng)建表時指定字符集:
CREATE TABLE mytable ( id INT NOT NULL, name VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
上述的COLLATE
指定了字符集和排序規(guī)則。如果已經(jīng)創(chuàng)建了表,可以使用ALTER TABLE
命令修改表的字符集:
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
同樣地,可以在創(chuàng)建列時指定字符集:
CREATE TABLE mytable2 ( id INT NOT NULL, name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB;
最后,也可以在連接數(shù)據(jù)庫時指定字符集:
$dsn = "mysql:host=localhost;dbname=mydb;charset=utf8mb4"; $pdo = new PDO($dsn, 'username', 'password');
更佳的做法是在MySQL中設(shè)置默認(rèn)字符集為utf8mb4,以避免出現(xiàn)以上錯誤。在my.cnf
文件中,可以添加以下配置信息:
[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
在修改完配置文件后,需要重啟MySQL服務(wù)才能生效。