SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: '\xAC15\xE9\x9B\x86...' 解決方法

SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: \'\\xAC15\\xE9\\x9B\\x86...\' 解決方法-1

在資料收集輸入的過程中,常會遇到: Invalid datetime format: 1366 Incorrect string value錯誤,這是資料庫或程式編碼的問題。

許多程式採用預設的utf-8編碼將utf-8編碼改成就可以解決大部分問題。

怎麼在mysql設定強制使用utf8mb4

在MySQL 中強制使用utf8mb4 字元集,可以透過以下簡單步驟配置資料庫、表格和連接的字元集為utf8mb4。以下是最簡潔的方法:

1. 修改MySQL 設定檔

  • 找到MySQL 的設定檔(通常是my.cnf 或my.ini,位置可能在/etc/mysql/my.cnf 或/etc/my.cnf 等,Windows 下可能在MySQL 安裝目錄)。
  • 在設定檔中新增或修改以下內容:
    [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect = 'SET N4ut server = utf8mb4_unicode_ci init_connect = 'SET N4

     

  • 儲存後,重新啟動MySQL 服務:
    sudo service mysql restart

    或(Windows 下)在服務管理中重新啟動MySQL。

2. 設定新資料庫和表格的預設字元集

  • 建立新資料庫時指定utf8mb4:
    CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 為現有資料庫變更字元集:
    ALTER DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 為現有表變更字元集:
    ALTER TABLE my_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3. 確保客戶端連線使用utf8mb4

  • 在連接MySQL 時,設定連接字元集:
    SET NAMES utf8mb4;
  • 如果使用程式語言(如PHP、Python),請確保連線配置指定utf8mb4:
    • PHP (PDO)
      $pdo = new PDO("mysql:host=localhost;dbname=my_database;charset=utf8mb4", "username", "password");
    • Python (MySQL Connector)
      import mysql.connector
      conn = mysql.connector.connect(host="localhost", database="my_database", user="username", password="password", charset="utf8mb4")

4. 驗證字元集設定

  • 檢查全域字元集:
    SHOW VARIABLES LIKE 'character_set%';
    SHOW VARIABLES LIKE 'collation%';
  • 確保character_set_server、character_set_database 等顯示為utf8mb4,collation_server 為utf8mb4_unicode_ci。

最簡單方法總結

  • 一步到位:修改my.cnf 文件,新增上述[client]、[mysql] 和[mysqld] 配置,重啟MySQL。這樣所有新建立的資料庫和表格預設使用utf8mb4,客戶端連線也自動適配。
  • 快速修復現有表:對已有資料庫和表格執行ALTER 語句,確保所有資料儲存為utf8mb4。
  • 注意:如果資料庫中已有數據,運行ALTER TABLE 前備份數據,以防字元轉換導致資料遺失。

如果遇到具體問題(如配置無效或資料亂碼),請提供更多細節,我可以進一步幫你排查!

在蘋果cms中遇到SQLSTATE[22007]: Invalid datetime format: 1366怎麼辦?

使用pgcms進行採集的時候會遇到SQLSTATE[22007]: Invalid datetime format: 1366錯誤。

解決方法很簡單。在程式的/application目錄下,編輯database.php文件

將資料庫編碼預設採用修改成utf8mb4就可以了!

// 資料庫編碼預設採用utf8
'charset' => 'utf8mb4',

評分

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *