如何解决更改正在运行的应用程序的 MySQL 字符编码
首先,我读过这本SO post,它也很有帮助;不过,为了100%确定重要数据不会被误改,我想问一些更具体的问题。
一些背景:
- 我的公司维护着一个正在运行的应用程序。它使用 MysqL,我们在 AWS EC2 实例上设置数据库。
- 出于某种原因,我直接去检查数据库中的数据。我通过运行 SELECT 命令看到了以下内容
- 在第
code1
列第 2 行的单元格中,它显示?????
,但它不应该是。应该是一些日文字符。 - 以下是我运行
show variables like 'char%';
后的输出 - 另一位同事连接到完全相同的 EC2 实例和数据库。不会发生编码问题。没有
?????
,但内容正确。 - 在这一点上,
show variables like 'char%';
的输出与我的不同之处在于,全是utf8
,没有latin1
。 - 我的 mac 系统语言是英语,另一台 mac 是日语。
我的问题:
-
MysqL 变量是否因连接到 EC2 实例的每个主机而异?我认为它们是 EC2 实例/数据库的变量(因此连接到它的人应该看到相同的值,但显然情况并非如此)
-
我想如果我将所有变量更改为
utf8
,编码问题就会消失。但考虑到破坏数据的风险,我不想随便尝试。如果之后只运行 SELECT 命令,这会影响现有数据吗?为了数据完整性,我是否必须将变量改回latin1
? -
鉴于这是一个正在运行的应用程序,即使我不执行某些 CREATE 或 UPDATE 命令,如果最终用户进行了一些更改,在我更改 MysqL 编码变量后会怎样?最终用户添加的新数据会不会有编码问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。