1

我在生产中为我的应用程序使用 MySql 5.6。现在发生的情况是应用程序中的表单上有一个字段具有数据类型 char(2) 表,其输入类型的最大长度为 25。现在当用户输入超过 2 个字符并点击保存时,它会提示

在此处输入图像描述

所以我在这里搜索并发现,如果我需要做到这一点而没有错误,我需要将 MySQL 模式切换为不使用 STRICT,因此我sql_mode在 my.cnf 文件中进行了设置并尝试了。但我仍然遇到同样的错误。这是 my.cnf 的样子:

[mysqld]
#
# * Basic Settings
#
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
lc-messages-dir = /usr/share/mysql
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

我正在使用 MySql 5.6 我没有得到我在这里缺少的东西。我希望那个错误消失。

编辑:

我做了SET GLOBAL sql_mode = ''然后做了show variables; 这里是输出: 在此处输入图像描述 但仍然得到同样的错误。

4

2 回答 2

1

我找到了解决这个问题的方法,如下所示:

您可以通过在 JBoss 数据源中添加属性jdbcCompliantTruncation=false来解决错误,例如:

jdbc:mysql://localhost:3306/dbName?zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false

注意:当您有多个属性要设置如上所示时,您可以使用&

于 2016-02-29T06:26:52.200 回答
0

您可以使用 sql 设置系统变量 sql_mode:

SET GLOBAL sql_mode = '';

如果是 INSERT 语句,即使使用非 STRICT sql 模式,错误也会持续存在。

在这种情况下,您需要修改您的列数据类型定义以允许更长的数据输入,或者修改您的查询。

您可以像这样修改您的查询以自行截断数据,因为 MySQL 不会自动处理它。

INSERT ... VALUES( ..., LEFT('...',2));
于 2016-02-25T07:19:05.800 回答