[英]SQLSTATE[HY000]: General error: 3988 Conversion from collation utf8mb3_general_ci into utf8mb4_general_ci impossible for parameter
[英]utf8mb3_general_ci into utf8mb4_general_ci
我正在做評論部分,我想將評論存儲在數據庫中,但我收到此錯誤:未捕獲的 PDOException:SQLSTATE [HY000]:一般錯誤:3988 從排序規則 utf8mb3_general_ci 轉換為 utf8mb4_general_ci 參數不可能
try {
$pdo = new PDO($db_config, $config['db_user'], $config['db_password'], [
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
]);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e) {
exit("Impossibile connettersi al database: " . $e->getMessage());
}
$check = $pdo->prepare($query);
$check->bindParam(':uid', $id, PDO::PARAM_STR);
$check->bindParam(':date', $date, PDO::PARAM_STR);
$check->bindParam(':message', $message, PDO::PARAM_STR);
$check->execute();
CREATE TABLE `comments`(
`cid` int(11) not null AUTO_INCREMENT PRIMARY KEY,
`uid` varchar(128) not null,
`date` datetime not null,
`message` TEXT not null) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
像這樣解決
$db_config = $config['db_engine'] . ":host=".$config['db_host'] . ";dbname=" . $config['db_name'].";charset=utf8mb4";
try {
$pdo = new PDO($db_config, $config['db_user'], $config['db_password'], [
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
]);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e) {
exit("Impossibile connettersi al database: " . $e->getMessage());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.