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)更改函数的定义者
The total number of locks exceeds the lock table size
当我们使用一个事务操作很多数据时, MySQL 有时会报错: The total number of locks exceeds the lock table size
解决方法1(重启mysql后会还原配置):
show variables like "%_buffer%"; -- 查看innodb_buffer_pool_size的值
SET GLOBAL innodb_buffer_pool_size=1073741824(1G) -- 修改innodb_buffer_pool_size的值
解决方法2:
打开my.ini文件
找到 innodb_buffer_pool_size=8M
将其修改为 innodb_buffer_pool_size=1024M
mysql创建表字段有6个字段是text,执行创建语句是报Row size too large (> 8126). 如果去掉其中3个后就可以正常执行,请问为什么?
问题描述:
在 MySQL 中,当你尝试创建一个表,其中包含多个
TEXT
类型的字段,并且这些字段的总大小超过了 InnoDB 存储引擎的行大小限制时,你会遇到 "Row size too large (> 8126)" 的错误。这是因为 InnoDB 存储引擎有一个限制,即单个行的最大大小不能超过 8126 字节。解决方案:
将建表语句种的ROW_FORMAT = Compact改为ROW_FORMAT = DYNAMIC