Laravel 中正确字符和排序规则的 MySQL 设置

Posted

技术标签:

【中文标题】Laravel 中正确字符和排序规则的 MySQL 设置【英文标题】:MySQL setting for correct character and collation in Laravel 【发布时间】:2018-03-20 19:17:16 【问题描述】:

我正在使用外部数据库(只读)和本地数据库(测试系统)。

所以每次从外部数据库获取数据时,我都会收到以下异常警告,默认为“�”这样的空字符。

在我的情况下我应该如何修改数据库设置?谢谢。


(3/3) 查询异常

SQLSTATE[HY000]: 一般错误: 1366 不正确的字符串值: '\xF8peri ...' for column 'customer_name' at row 1 (SQL: insert into customers (id, customer_name, @987654325 @) 值 (10008, Ol**n N***n K***t�pe AS, n***n@k***t.no))


外部数据库

character_set_client = utf8

character_set_connection = latin1

character_set_database = utf8

character_set_filesystem = 二进制

character_set_results = latin1

character_set_server = utf8

character_set_system = utf8

collat​​ion_connection = utf8_general_ci

collat​​ion_database = latin1_swedish_ci

collat​​ion_server = latin1_swedish_ci

服务器mysql 5.1版。


内部数据库

character_set_client = utf8mb4

character_set_connection = utf8mb4

character_set_database = utf8mb4

character_set_filesystem = 二进制

character_set_results = utf8mb4

character_set_server = latin1

character_set_system = utf8

collat​​ion_connection = utf8mb4_general_ci

collat​​ion_database = utf8mb4_unicode_ci

collat​​ion_server = latin1_swedish_ci

服务器 MySQL 版本 5.7.19


测试系统环境: Win10, WAMPSERVER(MySQL v5.7.19, php v7.1.9)

【问题讨论】:

复制***.com/questions/46640891/… 【参考方案1】:

\xF8 是一种 unicode,它不适用于 latin 和 latin_swedish 字符集。您必须将字符集更新为 UTF8 或 UTF8mb4 并将排序规则更新为 utf8_general_ci 或 utf8mb4_general_ci

【讨论】:

谢谢.. 我可以在哪里更新服务器?只是外部数据库还是两者兼而有之?在我的情况下,我无法更新外部数据库,它只能读取。 最好两个都更新,但你可以先尝试配置内部数据库。在 my.cnf 中配置它。 dev.mysql.com/doc/refman/5.7/en/option-files.html

以上是关于Laravel 中正确字符和排序规则的 MySQL 设置的主要内容,如果未能解决你的问题,请参考以下文章

mysql中字符集和排序规则说明

MySQL建立数据库时字符集和排序规则的选择

MySQL如何指定字符集和排序规则?

使用 PHP 和 MySQL 显示日文字符的问题

详细讲解MySQL的字符集与排序规则/校对规则(charactercollate)

详细讲解MySQL的字符集与排序规则/校对规则(charactercollate)