Linux——Mysql中文不兼容问题 - Go语言中文社区

Linux——Mysql中文不兼容问题


Linux 下使用Mysql 命令行时 中文不兼容问题记录

Mysql使用新手,在linux中使用mysql时遇到中文相关的两个问题

  1. 在命令行中无法输入中文
  2. insert 中文显示乱码以及无法插入的

系统环境

操作系统: ubuntu 18.04 LTS
Mysql 版本: 5.7.32
远程工具: Xshell 7

说明

  1. 验证完成在Terminal中可以输入中文
  2. 使用mysql -u$(USERNAME) -p$(PASSWD) 后无法在mysql的命令行操作界面中无法输入中文
  3. 当mysql 命令行操作界面中可以使用后,却无法将中文字符插入到数据库中

解决方案

  1. 统一系统编码和mysql的编码,最好统一到UTF8,使用locale查看系统语言和编码类型:
    linux locale显示结果
    查看mysql 当前的编码格式,使用命令show variables like 'character%':
    在这里插入图片描述
    需要着重注意的是character_set_database的值,确保和系统一致,如果不一样,可以使用命令:
    alter database <数据库名> charset utf8

  2. 修改mysql配置,配置文件路径:/etc/mysql/conf.d/mysql.cnf,确保该配置文件中的[mysql]配置下没有default-character-set=utf8

操作完上述步骤后,应该可以在mysql的命令行中输入中文字符;但有可能存在问题:无法将中文插入到数据库表中,在中文字符处报错,则需要查看第三个步骤。

  • 问题的关键也在于编码方式,表的编码格式需要和数据库的编码格式保持一致
    使用命令:show create table `TABLENAME` 可以看到数据库表的编码格式以及每一列的编码格式,确保要插入中文的那一列的编码格式为utf8,如果不一样可以使用命令:

    • 修改单个列的编码格式
      ALTER TABLE 表名 CHANGE `列名1` `列名1` varchar(32) CHARACTER SET utf8
    • 修改整个表的所有列的编码格式
      ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8

总结

整体来说,上述所有的问题归根到底都是编码格式的问题,需要确保操作系统数据库数据库表数据库表的列这几个的编码格式保持一致,才能解决中文输入和乱码的问题。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/u014471752/article/details/111598969
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢