首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GCP MySQL Cloud数据库不能正确导出多字节UTF-8字符。

GCP MySQL Cloud数据库不能正确导出多字节UTF-8字符。
EN

Stack Overflow用户
提问于 2019-09-25 15:24:24
回答 3查看 624关注 0票数 2

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

我觉得这是个虫子。但可能是我错过了什么。我希望有人能帮我!

复制步骤:

  1. 创建了一个新的Cloud数据库。使用5.7版。确保将标志character_set_server设置为utf8mb4
  2. 使用character_set to utf8mb4创建新数据库,collation创建数据库:

设置名称'utf8mb4‘整理' utf8mb4_unicode_ci ';创建表slug ( slug varchar(255)整理utf8mb4_unicode_ci NOT NULL ) ENGINE=InnoDB默认CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;插入到demo.slug值(’);

  • 验证了可以使用以下方法正确地获取这些值:

设置名称'utf8mb4‘、整理'utf8mb4_unicode_ci';从demo.slug;

  • Use选择*控制台提供的内置导出机制.

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

插入slug值(‘?’);

请注意,当我在步骤4.中省略该部分时,也会得到确切的值。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-09-26 10:42:24

我试着像你一样通过控制台做这件事,我也谈到了同样的问题。对我有效的解决办法是这样的:

1)白名单您GCP项目的公共IP

存储> SQL >您的实例>连接>连接>+添加网络

通过运行此命令,您可以获得公共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)然后通过控制台导入文件,选择所需的数据库。

我试过了,它对我有用。

票数 2
EN

Stack Overflow用户

发布于 2019-09-30 16:01:37

编辑:忽略下面的--成功可能是因为我测试的字符组成的字节也是有效的拉丁-1字符.

似乎只影响4字节的UTF-8编码字符(包括所有的表情符号等等)。

尝试使用3个字节的字符,如Cyrillic ( utf8=ea9980)或像希腊语Epsilon这样的2字节字符(Ɛutf-8=ceb5 5)就成功了。

请注意,Cloud备份不使用导出,因此它们不受影响。

票数 0
EN

Stack Overflow用户

发布于 2019-10-02 06:37:03

我从谷歌那里得到了一个答复:工程部知道这一点。不过,没有ETA的改变。所以没有办法解决这个问题。同时,进行有效备份的唯一方法是使用iker的指示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58101802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档