mysql 数据库 自动截取数据的问题---mysql的sql_model的四种模式:宽松模式、严格模式...

本文讨论了在MySQL中遇到文章内容字段被截取的问题,解释了原因在于使用了松散模式,并提供了两种解决方法:开启严格模式和更换字段类型。详细介绍了不同SQL_MODE模式的作用,以及如何通过修改MySQL配置文件来实现持久的严格模式。

mysql支持的sql_mode模式:ANSI、TRADITIONAL、STRICT_ALL_TABLES和STRICT_TRANS_TABLES。 

ANSI模式:宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告。

TRADITIONAL模式:严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。用于事物时,会进行事物的回滚。

STRICT_TRANS_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。只对支持事务的表有效。

STRICT_ALL_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。对所有表都有效。

 

问题描述:

添加一个超长的文章的时候,文章内容字段被mysql截取后插入。

debug:程序插入的sql没有问题。

问题原因:mysql 使用了松散模式,造成自动截取。给debug带来困难,

解决办法:

1,开启mysql 严格模式,对开发有好处;

2,换mysql的字段类型

参考:

下面贴一下mysql中和text相关的类型最大长度限制,请根据业务类型进行合理选择:

TINYTEXT 最大长度是 255 (2^8 – 1) 个字符。

TEXT 最大长度是 65535 (2^16 – 1) 个字符。

MEDIUMTEXT 最大长度是 16777215 (2^24 – 1) 个字符。

LONGTEXT 最大长度是 4294967295 (2^32 – 1) 个字符。

通过修改MySQL的配置文件,在配置文件中查找sql-mode,将此行修改成为:

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

如果查找不到sql-mode=则在[mysqld]下加入即可,推荐第二种方法,可以一劳永逸。

转载于:https://www.cnblogs.com/duanxz/p/3770181.html

"message": "\r\n### Error querying database. Cause: java.sql.SQLException: Row 304 was cut by GROUP_CONCAT()\r\n### The error may exist in io/dataease/ext/ExtVAuthModelMapper.xml\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT v_auth_model.id, v_auth_model.name, v_auth_model.label, v_auth_model.pid, v_auth_model.node_type, v_auth_model.model_type, v_auth_model.model_inner_type, v_auth_model.auth_type, v_auth_model.create_by, v_auth_model.level, v_auth_model.mode, v_auth_model.data_source_id, authInfo.PRIVILEGES AS `privileges` FROM ( SELECT GET_V_AUTH_MODEL_ID_P_USE ( ?, ? ) cids ) t, v_auth_model LEFT JOIN ( SELECT auth_source, group_concat( DISTINCT sys_auth_detail.privilege_extend ) AS `privileges` FROM ( `sys_auth` LEFT JOIN `sys_auth_detail` ON (( `sys_auth`.`id` = `sys_auth_detail`.`auth_id` ))) WHERE sys_auth_detail.privilege_value = 1 AND sys_auth.auth_source_type = ? AND ( ( sys_auth.auth_target_type = 'dept' AND sys_auth.auth_target IN ( SELECT dept_id FROM sys_user WHERE user_id = ? ) ) OR ( sys_auth.auth_target_type = 'user' AND sys_auth.auth_target = ? ) OR ( sys_auth.auth_target_type = 'role' AND sys_auth.auth_target IN ( SELECT role_id FROM sys_users_roles WHERE user_id = ? ) ) ) GROUP BY `sys_auth`.`auth_source` ) authInfo ON v_auth_model.id = authInfo.auth_source WHERE FIND_IN_SET( v_auth_model.id, cids ) and v_auth_model.model_type = ? ORDER BY v_auth_model.node_type desc, CONVERT(v_auth_model.label using gbk) asc\r\n### Cause: java.sql.SQLException: Row 304 was cut by GROUP_CONCAT()\n; uncategorized SQLException; SQL state [HY000]; error code [1260]; Row 304 was cut by GROUP_CONCAT(); nested exception is java.sql.SQLException: Row 304 was cut by GROUP_CONCAT()",
03-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值