无法在Google Cloud SQL(MySQL)上存储特殊字符 [英] Unable to store special character on Google Cloud SQL (MySQL)

查看:151
本文介绍了无法在Google Cloud SQL(MySQL)上存储特殊字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个MySQL实例:本地实例和Google Cloud SQL实例。使用Charsetutf8mb4在两者上创建了相同的数据库,可以在我运行以下命令时进行验证:

show variables like "character_set_database";

同样对于这两个数据库,我也从相同的csv文件导入数据。

其中一个文本列具有如下特殊字符:🥚⌛🍳 ABC。当我的网页从本地实例检索时,它可以正常显示,但当我切换到从Google Cloud实例检索数据时,我得到?⌛? ABC。我如何修复它?

推荐答案

this post中所述,为了转换数据库编码,您需要在数据库上编写ALTER命令。

此SQL脚本可用于此

# Convert the DB first
ALTER DATABASE <database_name> 
CHARACTER SET = utf8mb4 
COLLATE = utf8mb4_unicode_ci;
# Convert each table
ALTER TABLE <table_name> CONVERT TO 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;
# Convert each column
# All varchar columns should be converted to stay consistent
ALTER TABLE <table_name>
  CHANGE <varchar_col1> <varchar_col1> VARCHAR(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  CHANGE <varchar_col2> <varchar_col2> VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# Repair each table
REPAIR TABLE <table_name>
# Optimize each table
OPTIMIZE TABLE <table_name>

此更新后,云SQL实例中的character_set_serverflag更新为utf8mb4

现在重启您的Cloud SQL实例,就这样了

请在进行任何更改之前备份您的数据!

这篇关于无法在Google Cloud SQL(MySQL)上存储特殊字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆