【问题标题】:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'name' at row 1 [duplicate]com.mysql.jdbc.MysqlDataTruncation:数据截断:第 1 行的列“名称”的数据太长 [重复]
【发布时间】:2014-09-28 01:40:07
【问题描述】:

我正在尝试使用更新语句更新我的数据库,当我尝试执行此操作时,它向我显示一个错误...这些是我可以在此处找到的异常。

com.mysql.jdbc.MysqlDataTruncation:数据截断:第 1 行的列“名称”的数据太长 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2973) 在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695) 在 com.mysql.jdbc.Connection.execSQL(Connection.java:3020) 在 com.mysql.jdbc.Statement.executeUpdate(Statement.java:1074) 在 com.mysql.jdbc.Statement.executeUpdate(Statement.java:1008) 在 data.changeing.jButton1ActionPerformed(changeing.java:125) 在 data.changeing.access$000(changeing.java:21) 在 data.changed$1.actionPerformed(changed.java:62) 在 javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 在 javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 在 javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 在 javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 在 java.awt.Component.processMouseEvent(Component.java:6505) 在 javax.swing.JComponent.processMouseEvent(JComponent.java:3320) 在 java.awt.Component.processEvent(Component.java:6270) 在 java.awt.Container.processEvent(Container.java:2229) 在 java.awt.Component.dispatchEventImpl(Component.java:4861) 在 java.awt.Container.dispatchEventImpl(Container.java:2287) 在 java.awt.Component.dispatchEvent(Component.java:4687) 在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) 在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 在 java.awt.Container.dispatchEventImpl(Container.java:2273) 在 java.awt.Window.dispatchEventImpl(Window.java:2719) 在 java.awt.Component.dispatchEvent(Component.java:4687) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735) 在 java.awt.EventQueue.access$200(EventQueue.java:103) 在 java.awt.EventQueue$3.run(EventQueue.java:694) 在 java.awt.EventQueue$3.run(EventQueue.java:692) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 在 java.awt.EventQueue$4.run(EventQueue.java:708) 在 java.awt.EventQueue$4.run(EventQueue.java:706) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:705) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

【问题讨论】:

  • name 是 VARCHAR(x) 而你的 String.length() > x 可能吗?

标签: java mysql netbeans-platform


【解决方案1】:

您可以通过在 Jboss 数据源中添加属性来解决此错误,例如 jdbc:mysql://localhost:1189/dbName?jdbcCompliantTruncation=false&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8

你可以添加jdbc truncation false来解决这个错误。但是你的数据会根据值被截断。

【讨论】:

    【解决方案2】:

    这是因为该列的大小比您尝试插入的数据小,因此将该列的数据类型更改为更大的数据类型(例如,代替 char 使用 varchar..)然后就不会有问题

    【讨论】:

      【解决方案3】:

      您遇到此异常可能是因为您尝试使用比创建语句中定义的 SQL 列长度更长的字符串更新列。还要确保您的数据库中是否设置了正确的字符编码,而使用较短或相等的字符串(比列定义)保存操作可能会以此类异常结束,如果您在其中有特殊标记。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-30
        • 2015-11-28
        • 2012-11-14
        • 1970-01-01
        • 2014-02-26
        • 2022-11-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多