NEIAPI / nei

NEI 接口管理平台 源代码
https://nei.netease.com
MIT License
317 stars 77 forks source link

私有部署中文乱码 #11

Closed TaroXin closed 4 years ago

TaroXin commented 4 years ago

Bug 描述 接口的状态是乱码的,但是如果改变状态,会出现中文,刷新后又回到乱码状态

截图 image

image

image

huntbao commented 4 years ago

数据库里面的值看下是不是乱码?

TaroXin commented 4 years ago

数据库里面的值看下是不是乱码?

image

数据库好像也是乱码

huntbao commented 4 years ago

那就是数据库编码设置得不对吧?

lilywang711 commented 4 years ago

这个问题我也遇到了,似乎是因为部署 online 环境的初始化数据库表的命令的编码设置的不对(server/dao路径下的那些 ** Dao.js)(这里的代码不是很懂,具体原因不清楚)。 解决办法是你可以试着把 docs/install.sql里的语句去 mysql 里执行一遍。就可以了。

lilywang711 commented 4 years ago

By the way 请问一下,如果不执行 docs/install.sql. online 环境的 mysql 初始化表是在哪里执行的呢?是怎么个流程呢?

huntbao commented 4 years ago

By the way 请问一下,如果不执行 docs/install.sql. online 环境的 mysql 初始化表是在哪里执行的呢?是怎么个流程呢?

这个就是需要手动执行的,docs/install.sql 这个只是表结构文件。

lilywang711 commented 4 years ago

By the way 请问一下,如果不执行 docs/install.sql. online 环境的 mysql 初始化表是在哪里执行的呢?是怎么个流程呢?

这个就是需要手动执行的,docs/install.sql 这个只是表结构文件。

可是通过 docker 部署到线上去后,我没有手动去执行过 docs/install.sql ,那些表就有了。

lilywang711 commented 4 years ago

By the way 请问一下,如果不执行 docs/install.sql. online 环境的 mysql 初始化表是在哪里执行的呢?是怎么个流程呢?

这个就是需要手动执行的,docs/install.sql 这个只是表结构文件。

在本地 npm run dev的时候确实是需要手动执行。

int64ago commented 4 years ago

确认下你的 mysql 编码

show variables like '%char%';

如果编码不是 utf8mb4 那就是有问题了,可以通过启动参数 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci 设置,也可以通过配置文件 my.conf 设置:

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
lilywang711 commented 4 years ago

确认下你的 mysql 编码

show variables like '%char%';

如果编码不是 utf8mb4 那就是有问题了,可以通过启动参数 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci 设置,也可以通过配置文件 my.conf 设置:

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

感谢回复。 输入show variables like '%char%';后确实看到几个都是 latin1 可是 docker-compose.yaml 里 mysql command 加了这两句呀

image

int64ago commented 4 years ago

可是通过 docker 部署到线上去后,我没有手动去执行过 docs/install.sql ,那些表就有了。

这里 帮你做了

int64ago commented 4 years ago

确认下你的 mysql 编码 show variables like '%char%'; 如果编码不是 utf8mb4 那就是有问题了,可以通过启动参数 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci 设置,也可以通过配置文件 my.conf 设置:

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

感谢回复。 输入show variables like '%char%';后确实看到几个都是 latin1 可是 docker-compose.yaml 里 mysql command 加了这两句呀

image

.nei 文件夹删了重新来一次吧,可能是中途干了啥污染了配置?

TaroXin commented 4 years ago

目前来看是数据库引起的,我是直接修改了数据库中的值,然后重启 docker-compose,网站上面就正常了

int64ago commented 4 years ago

12 修了

问题是因为初始化脚本初始化插入数据时编码的问题,数据本身编码是 OK 的

你可以更新下代码,然后删除 ~/.nei 这个目录后重新再来一遍,就都 ok 了