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 NAMES utf8mb4'

     

  • 保存后,重启 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',

评分

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注