艾瑞
艾瑞
新闻资讯
中心动态 学习技巧
MySQL十个常见问题及解决方法!
2021-01-11

一、There is no such grant defined for user '%s' on host '%s'
错误编号:1141
问题分析:
MySQL 当前用户无权访问数据库。
解决方法:
1、虚拟主机用户请联系空间商,确认给你提供的帐号是否有授权数据库的权限。
2、独立主机用户请联系服务器管理员,确认给您提供的数据库帐号是否有管理此数据库的权限。

二、Duplicate key name 'xxx'
翻译:索引名重复
分析:要创建的索引已经存在了,就会引发这个错误,这个错误多发生在升级的时候。可能是已经升级过的,重复升级引起的错误。也有可能是之前用户擅自加的索引,刚好与升级文件中的所以相同了。
解决: 看看已经存在的索引和要添加的索引是否一样,一样的话可以跳过这条sql语句,如果不一样那么现删除已存在的所以,之后再执行。

三、Duplicate column name 'xxx'
翻译:字段名xxx重复
分析:添加的字段xxx已经存在,多发生在升级过程中,与问题十二的产生是一样的。
解决: 看一下已经存在的字段是否和将要添加的字段属性完全相同,如果相同则可以跳过不执行这句sql,如果不一样则删除掉这个字段。之后继续执行升级程序。

四、Table 'xxx' already exists
翻译:数据表xxx已经存在
分析:xxx表已经存在于库中,再次试图创建这个名字的表就会引发这个错误。同样多发生在论坛的升级中。类似于问题十二。
解决: 看看已经存在的表是否和将要创建的表完全一样,一样的话可以跳过不执行这个sql,否则请将存在的表先删除,之后继续执行升级文件。

五、Can't create database 'xxx'. Database exists
翻译:不能创建数据库xxx,数据库已经存在
分析:一个mysql下面的数据库名称必须保证唯一性,否则就会有这个错误。
解决:把已经存在的数据库改名或者把将要创建的数据库改名,总之不让他们的名称冲突。

六、小结
此类问题错误提示中都暗藏一个关键词duplicate(重复)
那么对于mysql数据库来说什么东西是不能重复的呢?
数据库 database
同一个数据库下数据表 table
同一个数据表下字段 column
同一个数据表下索引 key
同一个数据表在索引唯一(UNIQUE PRIMARY)的情况下记录中的这些字段不可以重复

七、Unknown system variable 'NAMES'
翻译:未知的系统变量NAMES
分析:Mysql版本不支持字符集设定,此时强行设定字符集就会出现这个错误。
解决: 将sql语句中的SET NAMES ‘xxx’ 语句去掉

八、Lost connection to MySQL server during query
翻译:MySQL服务器失去连接在查询期间
分析:远程连接数据库是有时会有这个问题。MySQL服务器在执行一条sql语句的时候失去了连接造成的。
解决: 一般不需要怎么去处理,如果频繁的出现那么考虑改善硬件环境。

九、User 'red' has exceeded the 'max_updates' resource (current value: 500)
翻译:msql用户red已经超过了'max_updates'(最大更新次数),'max_questions'(最大查询次数),'max_connections'(最大连接数),当前设定为500
分析:在mysql数据库的下有一个库为mysql,它其中有一个表为user这里面的纪录每一条都对应为一个mysql用户的授权。其中字段 max_questions max_updates max_connections分别记录着最大查询次数 最大更新数 最大连接数,当目前的任何一个参数大于任何一个设定的值就会产生这个错误。
解决: 独立主机用户可以直接修改授权表。修改完之后重启mysql或者跟新授权表,进入mysql提示符下执行
FLUSH PRIVILEGES;
记得后面要有分号’;’
虚拟主机的用户如果总是出现这个问题可找空间商协商解决。

十、Too many connections (1040)链接过多
翻译:达到最大连接数
问题分析:
连接数超过了mysql设置的值,与max_connections 和wait_timeout 都有关系。wait_timeout的值越大,连接的空闲等待就越长,这样就会造成当前连接数越大
解决方法:
1.虚拟主机用户请联系空间商优化 MySQL 服务器的配置;
2.独立主机用户请联系服务器管理员优化 MySQL 服务器的配置,可参考:
修改 MySQL 配置文件 my.ini 或者 my.cnf 中的参数:
max_connections= 1000
wait_timeout = 10
修改后重启 MySQL ,如果经常性的报此错误,请做一下服务器的整体优化。