mysql5.7插入中文到mysql显示异常(问号或者乱码)修改my.ini等一系列问题汇总

因为之前mysql版本升级到5.7造成好多后遗症问题,统统记录一下

起因是我发现自己前端插入一条含中文字符的数据在数据库中居然显示为??,疑惑的我排查了各种问题,此处附上一个问题排查较为详细的博文问题排查,我也是通过一一排查发现是自己的mysql字符集没有设置,或者没有设置好的话,默认是latin1(该死的默认)然后就开始了漫漫修改之路,可以通过show variables like "%chara%"; 这个命令先查看下自己所使用的那个库的字符集都是什么,其中分别代表的含义
 

character_set_client为客户端编码方式;

character_set_connection为建立连接使用的编码方式;

character_set_database为数据库的编码方式;

character_set_results是结果集的编码方式;

character_set_server为数据库服务器的编码方式。

 比如我的就是默认的latin1,所以出现插入汉字?的情况

然后就是修改之类以及遇到的问题

想必大家也想从根源一次性解决问题,所以就要从my.ini文件下手了


[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
basedir="D:/delepment/php/phpStudy/phpStudy/MySQL/"
datadir="D:/delepment/php/phpStudy/phpStudy/MySQL/data/"
port=3306
# server_id = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
character-set-server=utf8
[mysql]
default-character-set=gbk

 以上是我修改后的my.ini文件,主要包括basedir、datadir和新增character-set-server=utf8

 综上就是所有的修改了,修改好之后还需要重启mysql服务,然后就是慢慢过坑路。

问题一、本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止

 解决:

首先找到MySQL的安装目录(我的是:D:\delepment\php\phpStudy\phpStudy\MySQL),删除安装目录下的data文件夹

 以管理员身份打开cmd进入mysql安装目录的bin文件运行(在搜索栏输入cmd,右键以管理员身份运行)

(当然如果没有将MySQL命令添加到环境变量的话,请打开MySQL的bin文件夹,在地址栏输入cmd,回车,可以在此目录下打开cmd)

1.首先需要删除原来的mysql服务  mysqld --remove

2.其次再使用 mysqld –install 命令 安装。

3.最后再使用 mysqld --initialize-insecure 初始化(初始化之后,安装根目录下就会多出现一个data文件夹,里面会有一堆文件)。

4.然后再输入 net start mysql 就会显示启动成功。

 由此就成功好了,当然我还走过其他弯路

问题二、net start mysql报错服务无法启动,服务没有报告任何错误

原因可能一、是自己手动在安装目录下创建了data文件,删掉手动创建的文件,重新走一遍删除服务、安装命令、初始化、再启动即可。

原因可能二、改动过my.ini文件导致服务启动失败,可参考上述我的my.ini文件,或者更改回最初版本,重新再执行一次上述步骤。

问题三、MySQL提示出现1045问题

问题可能一、端口重复占用,关闭占用的端口即可例如MySQLa

问题可能二、用户名或者密码错误

   解决过程:参考博文解决MyQL数据库中1045错误的方法

        Unknown column 'password' in 'field list'

1.先关闭服务

2.再到MySQL的文件夹下面找到后缀名为my.ini的文件,在[mysqlld]的下面添加skip-grant-tables

3.以管理员身份运行cmd,然后到bin目录下输入mysql -u root -p,需要输入密码的时候回车就可以了

4.再输入use mysql  //使用这个数据库

5.再输入update mysql.user set authentication_string=password('你的新密码') where user='root';

6.flush privileges;      //刷新数据库

6.再删除skip-grant-tables,删掉之后再重启服务器就OK了

问题四、ERROR 1054 (42S22): Unknown column 'password' in 'field list'

参考博文第二篇可知:错误的原因是 5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string,所以第一篇博文的update user set password=password("123456") where user="root";

修改为update mysql.user set authentication_string=password('你的新密码') where user='root';即可

问题五、'mysql' 不是内部或外部命令,也不是可运行的程序 或批处理文件

参考博文mysql不是内部或外部命令,也不是可运行的程序或批处理文件

原因一、没有配置环境变量,配置一下即可

原因二、cmd没有以管理员身份运行,搜索栏输入cmd右键以管理员身份运行即可。

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值