MySQL经典问题解决方案

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: MySQL经典问题解决方案

👉引言💎


铭记于心
🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉


经典问题


1. 编码问题(了解)


命令行操作sql乱码问题


mysql> INSERT INTO t_stu VALUES(1,'张三','男');
ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'sname' at row 1


修改my.ini配置文件


在路径:mysql的数据存储路径下 找到my.ini文件
修改内容1:
  找到[mysql]命令,大概在63行左右,在其下一行添加 
    default-character-set=utf8
修改内容2:
  找到[mysqld]命令,大概在76行左右,在其下一行添加
    character-set-server=utf8
    collation-server=utf8_general_ci
修改完毕后,重启MySQL57服务

查看编码命令

show variables like 'character_%';
show variables like 'collation_%';


命令行操作sql仍然乱码问题


mysql> INSERT INTO t_stu VALUES(1,'张三','男');
ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'sname' at row 1

原因:按照刚才的配置,服务器端认为你的客户端的字符集是utf-8,而实际上你的客户端的字符集是GBK。

查看所有字符集:SHOW VARIABLES LIKE ‘character_set_%’;

解决方案,设置当前连接的客户端字符集 “SET NAMES GBK;”

set names gbk;是为了告诉服务器,客户端用的GBK编码,防止乱码。

有的时候,这样还不能解决,例如,某些win10操作系统环境下,那么修改命令行的属性-》选项-》勾选使用旧版控制台,然后重启电脑


2. 忘记root用户密码问题


  1. 关闭MYSQL57服务
# 以管理员权限运行cmd
net stop MYSQL57
  1. 设置mysqld服务不检查权限密码

mysql5.5

mysqld --skip-grant-tables

mysql5.7版

# 修改my.ini文件
# 在[mysqld]下方添加
skip-grant-tables = true
  1. 开启MYSQL57服务
# 以管理员权限运行cmd
net start MYSQL57
  1. mysql -uroot 无密码登陆服务器
  2. 修改root账户的密码为"root"

mysql5.5版

update user set authentication_string=password("root") where user="root";

mysql5.7版

update mysql.user set authentication_string=password('root') where user='root';
  1. 刷新: flush privileges;
  2. 退出登录的mysql
exit;
  1. 修改my.ini文件,删除掉之前添加在[mysqld]下方的那一行
  2. 验证无密码登录是否会失败mysql -uroot
  3. 以新密码登录: mysql -uroot -proot


3. 查看字符集和校对规则


关于SQL的关键字和函数名等不区分大小写,但是对于数据值是否区分大小写,和字符集与校对规则有关。

_ci(大小写不敏感),_cs(大小写敏感),_bin(二元,即比较是基于字符编码的值而与language无关)

(1)查看所有字符集和和其默认的校对规则

(2)查看GBK和UTF-8字符集的校对规则

show collation like ‘gbk%’;

show collation like ‘utf8%’;

utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。

utf8_general_ci 校对速度快,但准确度稍差。

utf8_unicode_ci 准确度高,但校对速度稍慢。

如果你的应用有德语、法语或者俄语,请一定使用utf8_unicode_ci。一般用utf8_general_ci就够了。

(3)查看服务器的字符集和校对规则

(4)查看和修改某个数据库的字符集和校对规则或修改数据库的字符集和校对规则:

ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 字符集名称 【COLLATE 校对规则名称】;

例如:

ALTER DATABASE ceshi_db DEFAULT CHARACTER SET utf8 collate utf8\_general_ci;

注意:修改了数据库的默认字符集和校对规则后,原来已经创建的表格的字符集和校对规则并不会改变,如果需要,那么需要单独修改。

(5)查看某个表格的字符集和校对规则

查看字符集:show create table users;

如果要查看校对规则:show table status from bookstore like ‘%users%’ ;

修改某个表格的字符集和校对规则:

修改表的默认字符集:

ALTER TABLE 表名称 DEFAULT CHARACTER SET 字符集名称 【COLLATE 校对规则名称】;

把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:

ALTER TABLE 表名称 CONVERT TO CHARACTER SET 字符集名称 【COLLATE 校对规则名称】;

例如:ALTER TABLE ceshi_table DEFAULT CHARACTER SET gbk collate gbk_chinese_ci;

🌹写在最后💖: 路漫漫其修远兮,吾将上下而求索!伙伴们,再见!🌹🌹🌹


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
解决MySQL主从慢同步问题的常见的解决方案:
解决MySQL主从慢同步问题的方法有很多,以下是一些常见的解决方案: 1. 检查网络连接:确保主从服务器之间的网络连接稳定,避免网络延迟或丢包导致数据同步缓慢。 2. 优化数据库配置:调整MySQL的配置参数,如增大binlog文件大小、调整innodb_flush_log_at_trx_commit等参数,以提高主从同步性能。 3. 检查IO线程和SQL线程状态:通过SHOW SLAVE STATUS命令检查IO线程和SQL线程的状态,确保它们正常运行并没有出现错误。 4. 检查主从日志位置:确认主从服务器的binlog文件和位置是否正确,避免由于错误的日志位置导致同步延迟。 5.
311 1
|
7月前
|
druid 前端开发 关系型数据库
mysql使用druid时自动断开连接解决方案
mysql使用druid时自动断开连接解决方案
176 0
|
1月前
|
关系型数据库 MySQL 数据库
深入探讨MySQL并发事务的问题及解决方案
深入探讨MySQL并发事务的问题及解决方案
115 0
|
2天前
|
SQL 监控 关系型数据库
深入解析MySQL死锁:原因、检测与解决方案
深入解析MySQL死锁:原因、检测与解决方案
|
1月前
|
运维 负载均衡 关系型数据库
MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构
MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构
|
1月前
|
搜索推荐 关系型数据库 MySQL
MySQL插入汉字报错的解决方案
MySQL插入汉字报错的解决方案
20 0
|
1月前
|
缓存 NoSQL 关系型数据库
MySQL与Redis的默契协作:解析数据一致性难题与解决方案
MySQL与Redis的默契协作:解析数据一致性难题与解决方案
41 0
MySQL与Redis的默契协作:解析数据一致性难题与解决方案
|
1月前
|
存储 关系型数据库 MySQL
Flink CDC中mysql cdc 抽取这个时间字段的值为null 有什么好的解决方案吗 ?
Flink CDC中mysql cdc 抽取这个时间字段的值为null 有什么好的解决方案吗 ?
135 0
|
6月前
|
关系型数据库 MySQL
MySQL中数据插入与主键冲突解决方案
MySQL中数据插入与主键冲突解决方案
255 0
|
1月前
|
Ubuntu 关系型数据库 MySQL
解决方案:MySQL数据表明明存在,但是就是报错表不存在,原来是需要配置 MySQL 忽略表名大小写!
解决方案:MySQL数据表明明存在,但是就是报错表不存在,原来是需要配置 MySQL 忽略表名大小写!
38 0

热门文章

最新文章