我正在尝试将MySQL 8服务器(主服务器)复制到MySQL 5.7 (从实例)。我知道它不是官方支持的,但问题是我们需要使用一个只支持MySQL 5.7的服务。
我知道在MySQL5.7中有一些排序规则在MySQL8中是不可用的。为此,我将所有表从utf8mb4_0900_ai_ci转换为utf8mb4_general_ci,因为两者都支持我们的数据值,因此我能够做到这一点,而不产生任何后果。
我还在我的主配置中设置了以下设置:
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET collation_connection = utf8mb4_general_ci; SET NAMES utf8mb4;'这将产生以下结果:(我没有作为超级用户连接)
mysql80> SHOW VARIABLES LIKE 'collation%';
+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| collation_connection | utf8mb4_0900_ai_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
+----------------------+--------------------+现在,我把范围缩小到以下几个方面:我的collation_connection是罪魁祸首,因为utf8mb4_0900_ai_ci不是MySQL57的一部分。由于这个原因,我在从服务器上得到了以下错误:
Error 'Character set '#255' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file' on query. Default database: 'database'. Query: 'BEGIN'有没有办法强迫我的主实例使用utf8mb4_general_ci而不是utf8mb4_0900_ai_ci?
问候
发布于 2022-06-24 01:48:48
这是一个旧职位,但这可能会对其他人有所帮助。您已经写了:init_connect='SET collation_connection = utf8mb4_general_ci; SET NAMES utf8mb4;' --这些语句应该是另一种方式:init_connect='SET NAMES utf8mb4; SET collation_connection = utf8mb4_general_ci;'作为SET NAMES utf8mb4;也将更改collation_connection,这将撤消您以前的语句。
https://dba.stackexchange.com/questions/260613
复制相似问题