MySQL问题汇总

PHP在使用addAll函数时插入失败:

原因分析:sql拼接太长超过max_allowed_packet(默认4M),所以需要调大一些

修改方法:打开my.ini,修改max_allowed_packet即可,然后重启mysql

show VARIABLES like 'max_allowed_packet';

Caused by: java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY

查看mysql是否启用ONLY_FULL_GROUP_BY

Incorrect datetime value: '0000-00-00 00:00:00' for column 'update_time' at row 1

查看mysql是否启用了NO_ZERO_DATE 

select @@global.sql_mode

如果有,则删除这个模式,找到my.ini,去掉然后重启mysql服务即可

查询数据库需要随机排序的时候可以使用 order by rand()进行随机排序。

例如select * from table order by rand();

mysql数据库中表名或字段名与SQL语言中的关键字冲突时,如何区分?

需要使用反引号(backtick)来将其括起来。例如,我们新建了一个名为group表且有一个叫level的字段,要查询“group”表中的“level”字段时,SELECT `level` FROM `group`;

mysql使用group_concat导致查询内容缺失:

解决方法:在my.ini配置中添加group_concat_max_len = 102400然后重启mysql服务;然后在命令行端输入show variables like 'group_concat_max_len';查询配置是否成功

my.ini位置:C:\ProgramData\MySQL\MySQL Server 5.7

Lock wait timeout exceeded; try restarting transaction

执行删除任务时,报了这样的错,先查询相关信息

show full PROCESSLIST;


SELECT * FROM information_schema.INNODB_TRX;


SELECT * FROM information_schema.INNODB_LOCKs;
SELECT * FROM information_schema.INNODB_LOCK_waits;

然后将阻塞的线程杀掉即可
kill 51; 

带where的delete删除数据慢的问题

CREATE INDEX mytest ON my_table(add_time);//先创建索引

delete from my_table where add_time<'2023-01-01';//再删除

mysql包含数字的字符串order时顺序混乱,如10在2前面:

将字段*1或者+0可以将MySQL字符串字段按数值排序

select * from car_task ORDER BY sort*1
select * from car_task ORDER BY sort+0

The user specified as a definer ('test'@'%') does not exist

这个错误是因为在复制数据库时把当时用test用户创建的函数赋值到了本地使用,但本地又没有test这个用户,所以在调用时就会报错了

解决方法:(1)创建一个test用户 (2)更改函数的定义者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值