gpt4 book ai didi

mysql - GCP MySQL Cloud SQL 数据库无法正确导出多字节 UTF-8 字符

转载 作者:行者123 更新时间:2023-11-29 02:09:14 24 4
gpt4 key购买 nike

当我创建 MySQL Cloud SQL 数据库的备份时,它无法正确导出它包含的 UTF-8 多字节字符。

我觉得这是一个错误。但这可能是我遗漏了什么。我希望有人能帮助我!

重现步骤:

  1. 创建一个新的 Cloud SQL MySQL 数据库。使用版本 5.7。请务必将标志 character_set_server 设置为 utf8mb4

  2. 创建一个新数据库,character_setutf8mb4collat​​ionutf8mb4_unicode_ci

  3. 填充数据库:

    SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
    CREATE TABLE `slug` (
    `slug` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    INSERT INTO demo.slug VALUES ('🙊🇩🇪');
  4. 我验证了我可以使用以下方法正确取回这些值:

    SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
    SELECT * FROM demo.slug;
  5. 使用控制台提供的内置导出机制。

    enter image description here

  6. 当您下载生成的 SQL 文件时,相关的 INSERT 语句将如下所示。并包含问号,而不是有效的 UTF-8 字符。

    INSERT INTO `slug` VALUES ('???');

    请注意,当我在第 4 步中省略 SET NAMES 部分时,我也会得到该精确值。

最佳答案

我尝试像您一样通过控制台执行此操作,但我遇到了同样的问题。对我有用的解决方法是:

1) 将您的 GCP 项目的公共(public) IP 列入白名单

STORAGE > SQL > your instance > CONNECTIONS > Connectivity > +Add network

通过运行此命令,您可以获得公共(public) IP dig +short myip.opendns.com @resolver1.opendns.com

2) 通过运行以下命令创建 .sql 文件:mysqldump --databases [YOUR_DB_NAME] -h [YOUR_INSTANCE_PUBLIC_IP] -u [YOUR_USER] -p --default-character- set=utf8mb4 > [FILE_NAME].sql

3) 通过运行以下命令将文件移动到存储桶中:gsutil mv [FILE_NAME].sql gs://[YOUR_BUCKET_NAME]/

4) 然后您通过控制台导入文件,选择您想要的数据库。

我试过了,它对我有用。

关于mysql - GCP MySQL Cloud SQL 数据库无法正确导出多字节 UTF-8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58101802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com