我正在为我的应用程序在生产中使用MySql 5.6。现在发生的是应用程序中的表单上有一个字段,其数据类型为char(2)表,其输入类型的最大长度为25.现在,当用户输入的字符数超过2并且点击保存时,它会提示
所以我搜索并发现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;
这是输出:
但仍然得到同样的错误。
答案 0 :(得分:1)
我找到了解决这个问题的方法,如下所示:
您可以通过在JBoss数据源中添加属性 jdbcCompliantTruncation = false 来解决错误,如:
jdbc:mysql://localhost:3306/dbName?zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false
注意:如果您要设置多个属性,如上所示,则可以使用&
答案 1 :(得分:0)
您可以使用sql:
设置系统变量sql_modeSET GLOBAL sql_mode = '';
如果是INSERT语句,即使使用非STRICT sql模式,错误仍会存在。
在这种情况下,您需要修改ur列数据类型定义以允许更长的数据输入,或修改您的查询。
你可以像这样修改你的查询来自己截断数据,因为MySQL没有自动处理它。
INSERT ... VALUES( ..., LEFT('...',2));