mysql(本人遇到到错误码及解决办法)
1045 | ER_ACCESS_DENIED_ERROR |
访问被拒绝
数据库服务器/数据库用户名/数据库名/数据库密码错误
2020年03月26日 再次遇到
1045'failed to create new session' 没有空间啦,清理一下空间
2020年06月24日
1045 Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
本地登录密码可能错误,远程登录远程授权没有开
本人是远程权限没开给我(此处本人用途数据表生成modle)
2020年12月29日
本人链接同事数据库,无法用root,后来其创建了新的用户
1048 | ER_BAD_NULL_ERROR |
pymysql.err.IntegrityError: (1048, 'Unknown error 1048')
某些字段不能为空(这个bug好难解呀,我与数据表一个一个比对的)
1049 | ER_BAD_DB_ERROR |
pymysql.err.InternalError: (1049, 'Unknown error 1049')
连接数据库错误,检查ip,端口,账号,密码,数据库名是否有误
1050 | ER_TABLE_EXISTS_ERROR |
背景:1050, "Table 'crm_userprofile' already exists"
)
处理方法:删除相应的表重建了
一只叫做Unix的猫解决方法
1.主从数据结构中,主库新建a表操作,从库已有a表;
2.单表中,建表重复,建议新建表最好使用 create table xx if no exist;
解决办法:
1.从库drop table a;删除原先表;
2.停掉从库的mysql服务器,mysqladmin -S /tmp/mysql3316.sock -u -p shutdown 关闭数据库
3.重启从库,启动slave模式;/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/mysql3317/my3317.cnf & 重启数据库
mysql>slave start;
1054 | ER_BAD_FIELD_ERROR |
1054, "Unknown column 'password' in 'field list'"
字段与数据库不一样(数据表中有未知的列, 本人实在ORM模型中遇到的,检查改为相同即可)
1060 | ER_DUP_FIELDNAME |
1060,字段名重复了,(本人当时做ddl,sql导入,进行SQL解析出同样两个索引,故报错
1062 | ER_DUP_ENTRY |
pymysql.err.IntegrityError: (1062, '')
unique=True,某字段是唯一存在的,报错就是因为数据库中的该值已经重复存在
修改方法:1、删除数据库中的重复数据,2、或者允许某字段值重复存在(即修改索引)
1067 | ER_INVALID_DEFAULT |
无效的默认值
1089 | Incorrect prefix key |
1089 - Incorrect prefix key;
the used key part isn't a string,
the used length is longer than the key part,
or the storage engine doesn't support unique prefix keys
本人猜测因为建表后修改表的字段属性,导致了冲突
本人复制了属性从新建个空表,或者删除表的数据保存即可。或者修改表中字段
1130 | 无法远程连接 |
原因:mysql服务器 root 默认只允许 localhost 也就是 127.0.0.1 连接
use mysql;
允许任何IP链接 update user set host = '%' where user ='root';
刷新权限 flush privileges;
1136 | 传入参数个数不相同 |
原因:mysql服务器 root 默认只允许 localhost 也就是 127.0.0.1 连接
pymysql.err.InternalError: (1136, "Column count doesn't match value count at row 1")
INSERT INTO Salary VALUES('000001', 2100.8, 123.09) 有的可能不为空,或者insert语句 % 拼接有误
1142 | ER_TABLEACCESS_DENIED_ERROR |
pymysql.err.OperationalError: (1142, 'Unknown error 1142')
权限问题,可能权限不够,联系管理员查看你是否有相应增删改查权限
本人修改字段是也报了此错误
执行SHOW CREATE TABLE 时返现是视图临时表(待验证)
1146 | ER_NO_SUCH_TABLE |
Table doesn't exist 表不存在
1213 | Deadlock found when trying to get lock; try restarting transaction |
出现原因mysql锁了
SELECT * FROM information_schema.INNODB_LOCK_WAITS; 查看当前等锁的事务
SELECT * FROM information_schema.INNODB_LOCKS; 查看当前锁定的事务
SELECT * FROM information_schema.INNODB_TRX; 查看当前的事务!
- 治标办法,能迅速解决问题,不治本
(遇到时间2021-08-19)
RUNNING状态 杀死这个进程,杀不死就重启Mysql服务
杀死进程id(trx_mysql_thread_id对应的值)kill 进程号
1264 | ER_WARN_DATA_OUT_OF_RANGE |
pymysql.err.DataError: (1264, '')
重点关注这个表的字段 tinyint 1字节 (-128,127) (0,255) 小整数值
警告数据超出范围(一不小心就超了)
1265 | WARN_DATA_TRUNCATED |
为行%ld上的列’%s’截短数据
本人错误原因:MySQL字段birthday 应传1995-08-07 ,本人传成了手机号1801918****,所以报了此错误
1292 | ER_TRUNCATED_WRONG_VALUE |
通常时间格式错误data, timedate
1327 | ER_SP_UNDECLARED_VAR |
mysql语句 或者 创建 存储过程时报错([存储过程]
解决时间 2020-01-13 17:21:35
select * into newtable from oldtable where
从一个表中选取数据,然后把数据插入另一个表中, mysql不支持上述语法
应改为:
结构相同:
insert into table_name_new select * from table_name_old
结构不同:
insert into table_name_new(column1,column2...) select column1,column2... from table_name_old
本人实在python中pymysql:
执行select * from pub_user limit 1000;
注意1000后无空格且次‘;’中文分号,报1327 错误。
注意1000后有空格且次‘;’中文分号,报1064 错误。
1364 | Field ‘***’ doesn’t have a default value |
数据表里非空且无默认值的字段
说人话是:数据表数据表里某个字段 不能为空且没有默认值
解决办法是:设置为可空 或者 设置默认值
1366 | Incorrect string value |
pymysql.err.InternalError: (1366, "Incorrect string value:
MySQL中utf8编码只支持到3字节,一些4字节的unicode不能正确处理
修改MySQL的字段编码为utf8mb4
1405 | 原因没有找到,尴尬呀 |
当时本人的链接是localhost, 127.0.0.1 所以链接不上指定的mysql数据库。
意思就是:可能自己链接其他主机的数据库,而自己链接时使用localhost,回报这种错误
1406 | ER_DATA_TOO_LONG |
pymysql.err.DataError: (1406, '') 传入的数据不正确(长度,类型有误)
解决办法:1. 检查传入字段类型是否有误 插入字段长度是否过长 2. 找到dba修改数据库数据表中对应字段长度
1553 | MySQL Cannot drop index needed in a foreign key constraint |
MySQL Cannot drop index needed in a foreign key constraint
删除字段对应的外键(或请检查索引问题)
2003 | 10060 2003-can t connect to MySQL server on ip(10060)的解决办法 |
连接mysql数据库时提示,提示此错误
1. 检查mysql服务器未开启
2. bind-address对于连接的ip做了一个限定(公司会设置,找运维赋予权限,生成证书,连接)
3. 数据库用户只能在指定的ip上连接(公司会设置,找运维赋予权限,生成证书,连接)
4. 检查防火墙是否关闭,网络是否通
2006 | MySQL server has gone awayMySQL 服务器不可用 |
数据量过大,修改my.ini配置文件,可将max_allowed_packet加大到500M
2013 | CR.CR_SERVER_LOST |
CR.CR_SERVER_LOST, "Lost connection to MySQL server during query")
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
失去MySQL 服务器连接,检查数据库的服务没有起,或者账号密码端口是否被更改
2059 | - |
2021-01-08遇到此错误
mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
更改加密规则:
use mysql; #选择数据库
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; # 修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; # 更新用户密码
FLUSH PRIVILEGES; #刷新权限
2059 | Too many connections |
2021-12-28
遇到此错误,原因是其他客户端正在使用所有可用的连接应用场景
django, peewee。 mysql 默认最大链接数为151修改一下即可
解决思路
1. SET GLOBAL max_connections = 800; 非持久,下次重启没啦
2. 持久化配置
vi /etc/mysql/my.cnf
[mysqld]
max_connections = 500
**查看mysql的最大连接数
show variables like '%max_connections%';