微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改正在运行的应用程序的 MySQL 字符编码

如何解决更改正在运行的应用程序的 MySQL 字符编码

首先,我读过这本SO post,它也很有帮助;不过,为了100%确定重要数据不会被误改,我想问一些更具体的问题。

一些背景:

  1. 我的公司维护着一个正在运行的应用程序。它使用 MysqL,我们在 AWS EC2 实例上设置数据库
  2. 出于某种原因,我直接去检查数据库中的数据。我通过运行 SELECT 命令看到了以下内容

    enter image description here

  3. 在第 code1 列第 2 行的单元格中,它显示 ?????,但它不应该是。应该是一些日文字符。
  4. 以下是我运行 show variables like 'char%'; 后的输出

    enter image description here

  5. 另一位同事连接到完全相同的 EC2 实例和数据库。不会发生编码问题。没有?????,但内容正确。
  6. 在这一点上,show variables like 'char%';输出与我的不同之处在于,全是 utf8,没有 latin1
  7. 我的 mac 系统语言是英语,另一台 mac 是日语。

我的问题:

  1. MysqL 变量是否因连接到 EC2 实例的每个主机而异?我认为它们是 EC2 实例/数据库的变量(因此连接到它的人应该看到相同的值,但显然情况并非如此)

  2. 我想如果我将所有变量更改为 utf8,编码问题就会消失。但考虑到破坏数据的风险,我不想随便尝试。如果之后只运行 SELECT 命令,这会影响现有数据吗?为了数据完整性,我是否必须将变量改回 latin1

  3. 鉴于这是一个正在运行的应用程序,即使我不执行某些 CREATE 或 UPDATE 命令,如果最终用户进行了一些更改,在我更改 MysqL 编码变量后会怎样?最终用户添加的新数据会不会有编码问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。