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)更改函数的定义者