mysql(本人遇到到错误码及解决办法)

访问被拒绝
数据库服务器/数据库用户名/数据库名/数据库密码错误

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,后来其创建了新的用户
pymysql.err.IntegrityError: (1048, 'Unknown error 1048')
某些字段不能为空(这个bug好难解呀,我与数据表一个一个比对的)
pymysql.err.InternalError: (1049, 'Unknown error 1049')
连接数据库错误,检查ip,端口,账号,密码,数据库名是否有误
背景: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, "Unknown column 'password' in 'field list'"
字段与数据库不一样(数据表中有未知的列, 本人实在ORM模型中遇到的,检查改为相同即可)
1060,字段名重复了,(本人当时做ddl,sql导入,进行SQL解析出同样两个索引,故报错
pymysql.err.IntegrityError: (1062, '')
		unique=True,某字段是唯一存在的,报错就是因为数据库中的该值已经重复存在
		修改方法:1、删除数据库中的重复数据,2、或者允许某字段值重复存在(即修改索引)
无效的默认值
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
本人猜测因为建表后修改表的字段属性,导致了冲突
本人复制了属性从新建个空表,或者删除表的数据保存即可。或者修改表中字段
报错:Row size too large. 
The maximum row size for the used table type, not counting BLOBs, is 65535. 
This includes storage overhead, check the manual. 
You have to change some columns to TEXT or BLOBs
尝试创建的表或修改的表的行大小超过了 MySQL 表类型的最大限制。
MySQL 表类型的最大行大小为 65535 字节,这包括列名、数据类型、存储开销和索引等
表包含太多的列或列的数据类型太大,则可能会导致行大小超过此限制

场景:本人在原表增加一个字段,结果出现该错误
于是我查寻DDl,发现数据库的语句,username、email 等多个字段长度用4096 
真tm前面人刨坑,后面人掉进去压根看不到影儿
原因:mysql服务器 root 默认只允许 localhost 也就是 127.0.0.1 连接
 use mysql;
 允许任何IP链接 update user set host = '%' where user ='root';
 刷新权限 flush privileges;
原因: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语句 % 拼接有误
pymysql.err.OperationalError: (1142, 'Unknown error 1142')
 权限问题,可能权限不够,联系管理员查看你是否有相应增删改查权限
 本人修改字段是也报了此错误
 执行SHOW  CREATE  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;   查看当前的事务!

mysql本人常遇到的错误码及解决办法(30种)_数据库

  1. 治标办法,能迅速解决问题,不治本(遇到时间2021-08-19) RUNNING状态 杀死这个进程,杀不死就重启Mysql服务
    杀死进程id(trx_mysql_thread_id对应的值)kill 进程号
pymysql.err.DataError: (1264, '')
重点关注这个表的字段 tinyint 1字节 (-128,127) (0,255) 小整数值
警告数据超出范围(一不小心就超了)
为行%ld上的列’%s’截短数据
本人错误原因:MySQL字段birthday 应传1995-08-07 ,本人传成了手机号1801918****,所以报了此错误
通常时间格式错误data, timedate

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 错误。
数据表里非空且无默认值的字段 
说人话是:数据表数据表里某个字段 不能为空且没有默认值 
解决办法是:设置为可空 或者 设置默认值
pymysql.err.InternalError: (1366, "Incorrect string value: 
    MySQL中utf8编码只支持到3字节,一些4字节的unicode不能正确处理
    修改MySQL的字段编码为utf8mb4
当时本人的链接是localhost, 127.0.0.1  所以链接不上指定的mysql数据库。
意思就是:可能自己链接其他主机的数据库,而自己链接时使用localhost,回报这种错误
pymysql.err.DataError: (1406, '')  传入的数据不正确(长度,类型有误)
解决办法:1. 检查传入字段类型是否有误   插入字段长度是否过长 2. 找到dba修改数据库数据表中对应字段长度
MySQL Cannot drop index needed in a foreign key constraint
删除字段对应的外键(或请检查索引问题)
连接mysql数据库时提示,提示此错误
	1. 检查mysql服务器未开启
	2. bind-address对于连接的ip做了一个限定(公司会设置,找运维赋予权限,生成证书,连接)
	3. 数据库用户只能在指定的ip上连接(公司会设置,找运维赋予权限,生成证书,连接)
	4. 检查防火墙是否关闭,网络是否通
数据量过大,修改my.ini配置文件,可将max_allowed_packet加大到500M
CR.CR_SERVER_LOST, "Lost connection to MySQL server during query")
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
	失去MySQL 服务器连接,检查数据库的服务没有起,或者账号密码端口是否被更改
场景: 创建用户切能远程,并设置可以远程连接,但是navicat始终连接不上,出现上面问题;
解决办法如下; 	【遇到问题 2023-04-17】
sudo vim /etc/mysql/my.cnf
[mysqld]
#bind-address        = 127.0.0.1   # 注销; 允许远程连接MySQL
sudo service mysql restart
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; #刷新权限

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%';
遇到时间:2022-10-28
原因:两个数据表中创建外键的数据类型不一致;一个表是int,一个是bigint
解决办法:将数据类型修改为一致的即可