mysql错误集合

ERROR: No query specified

出现此错误是sql不合法原因, \G后面不需要再加分号;

select * from abc\G;
或者
select * from abc;;

mysql 解除正在死锁的状态

this is incompatible with sql_mode=only_full_group_by以及laravel设置

关于 varchar 字段索引问题

字段

name type length 字符集
find_path varchar 1000 utf8mb4

这里有一个find_path字段来记录递归评论的ID,但是在单表数据量大了的时候.. id% 这里中like查询很慢.. 所以就打算加索引

报错

Specified key was too long; max key length is 3072 bytes

这个报错表示索引最长是3072bytes

字符集为 utf8mb4 时,限制 varchar 字符为:3072/4 = 768;
字符集为 utf8 时,限制 varchar 字符为:3072/3 = 1024;
因此字符集为 utf8mb4 时,将 name 字段索引前缀长度控制在 768 以内即可成功创建索引。

按照以上原理... 1000 已经超过最大长度 768 所以自然无法创建索引

解决办法

3072 / 4 = 768 所以字段修改为 varchar(768) 即可

ERROR mysql 1149:28000Access denied ....

ERROR mysql 1149:28000Access denied for user 'root'@'x.x.x.x' (using password: YES)

查询有root用户允许哪些ip登录

USE mysql
SELECT host FROM user WHERE user = 'root';
+-------------+
| host        |
+-------------+
| %           |
| localhost   |
+-------------+

增加登录授权

GRANT all PRIVILEGES ON *.* TO 'root'@'x.x.x.x' identified by '密码';

修改密码

alter user 'root'@'x.x.x.x' identified by '新密码';

刷新权限

flush privileges

参考文章