第1行的列数据太长了mysql 5.6

时间:2016-02-25 07:15:43

标签: mysql sql sql-mode

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

enter image description here

所以我搜索并发现here如果我需要在没有错误的情况下进行此操作,我需要将MySQL模式切换为不使用STRICT,因此我在my.cnf文件中设置了sql_mode并尝试了。但我仍然得到同样的错误。 这是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; 这是输出: enter image description here 但仍然得到同样的错误。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

分隔它们

答案 1 :(得分:0)

您可以使用sql:

设置系统变量sql_mode
SET GLOBAL sql_mode = '';

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

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

你可以像这样修改你的查询来自己截断数据,因为MySQL没有自动处理它。

INSERT ... VALUES( ..., LEFT('...',2));