MySQL之Row XXX was cut by GROUP_CONCAT()错误解决

MySQL数据库,一个更 UPDATE 更新用到了 group_concat 函数,报:Row XXX was cut by GROUP_CONCAT() 的错误,但单独的查询没有报错。

错误含义是:GROUP_CONCAT 有最大的长度限制,超过最大长度就会被截断掉。由 group_concat_max_len 系统变量限制最大长度,其默认值为 1024。

阅读更多

MySQL之You can't specify target table for update in FROM clause错误解决

MySQL 根据子句进行条件更新或删除时,报如下错误:You can’t specify target table for update in FROM clause

错误意思是指:在同一语句中,update 和 select 子句不能是同一个表。

解决方式:需要把 SELECT 条件子句的结果集转为中间临时表,此临时表会依赖于 SELECT 条件子句驱动表。

阅读更多

MySQL系列(30): MySQL 递归查询

开发中经常会碰到传父类id,查出其下所有子类需求。

实现思路:拿当前查到的 id 递归查询 parent_id = id,合并所有的 id 到一个字段 ids,然后查 id 在 ids 中的数据 。

实现方案:一种是在代码中递归查询实现;另一种是在 SQL语句递归查询实现。

本篇主要描述在 MySQL 中的递归查询SQL语句实现。

阅读更多

MySQL系列(27):查询数据库中各个表的容量及大小

1
2
3
4
5
6
7
8
9
10
11
12
SELECT
table_schema AS '数据库',
table_name AS '表名',
table_rows AS '记录数',
TRUNCATE (data_length / 1024 / 1024, 2) AS '数据容量(MB)',
TRUNCATE (index_length / 1024 / 1024, 2) AS '索引容量(MB)'
FROM
information_schema.TABLES
WHERE
table_schema = 'db_name' -- 数据库名字
ORDER BY
table_rows DESC;
阅读更多

MySQL系列(8): group by 坑和 update 强制条件

MySQL 5.7.5 版本,默认开启了only_full_group_by模式,select字段只能是group by的字段,否则会报错,可以关闭该模式,或使用 any_value(column) 来抑制该异常。

防止在生产中使用 update 语句漏带条件导致全表更新事故,开启安全更新模式,强制带条件更新,否则报错。 

阅读更多