mysql知识点汇总及遇到的问题梳理
·
目录
一、知识点
1、mysql批量插入不重复uuid数据(insert select 语法)
问题描述:
-
通过select replace(uuid(), ‘-’, ‘’) , 生成的uuid全部重复。(可能是navicat执行顺序的问题)
-
select uuid() ,生成的uuid不重复。但是有“-”且长度太长,不符合要求。
完美解决:
修改为:select md5(uuid())
来源:来源
二、问题梳理
1、数据库导入sql错误 Unknown collation: ‘utf8mb4_0900_ai_ci’
错误原因:
高版本数据库(8.0)转存sql文件 并导入低版本数据库(5.7)
解决办法:
方案一:升级mysql至高版本
方案二:将需要导入的sql文件,把其中的
utf8mb4_0900_ai_ci全部替换为utf8_general_ci
utf8mb4替换为utf8
重新执行sql文件
2、windows上同时安装两个版本的mysql数据库
3、mysql 连接远程连接服务器 1130错误
1、以权限用户root登录
mysql -u root -p
2、选择mysql库
use mysql;
3、查看mysql库中的user表的host值
(即可进行连接访问的主机/IP名称)
select 'host' from user where user='root';
4、修改host值
(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
update user set host = '%' where user ='root';
5、刷新MySQL的系统权限相关表
flush privileges;
6、再重新查看user表时,有修改
select 'host' from user where user='root';
4、mysql登录报错1045
1、修改配置文件,添加不校验密码
skip-grant-table
2、mysql -uroot -p任意密码登录
use mysql;
select Host,User from user;
①若是没有root用户

发现没有root用户了
执行命令创建用户并授权
create user 'root'@'%' identified by 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; #赋予所有库所有表操作权限
flush privileges;

②若是有root用户
执行修改密码命令
set password=password('root');
若出现以下错误
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
就先执行 flush privileges;,再执行修改密码

3、配置文件恢复配置
去掉以下配置
skip-grant-table
4、重启mysql服务
systemctl restart mysqld
再登陆就正常了
5、锁表和解锁
①方法1
//1.查看当前数据库锁表的情况
SELECT * FROM information_schema.INNODB_TRX;
//2.杀掉查询结果中锁表的trx_mysql_thread_id
kill trx_mysql_thread_id
②方法2
1、查询是否锁表
show OPEN TABLES where In_use > 0;
2、查询进程
show processlist
查询到相对应的进程===然后 kill id
补充:
查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
6、mysql update操作时not in的用法
报错的写法:
UPDATE t_resource_structure SET second_root_id = '123'
where structure_id not in
(SELECT structure_id FROM t_resource_structure WHERE structure_id = '234');
正确的写法:
UPDATE t_resource_structure SET second_root_id = '123'
where structure_id not in
(SELECT a.structure_id FROM (SELECT * FROM t_resource_structure WHERE structure_id = '234') a);
更多推荐



所有评论(0)