簡體   English   中英

utf8mb3_general_ci 轉換成 utf8mb4_general_ci

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM