Error updating database. Cause: dm.jdbc.driver.DMException: Too big variable


错误分析 从错误信息 `Error updating database. Cause: dm.jdbc.driver.DMException: Too big variable` 可知,在更新数据库时出现异常,达梦数据库(DM)驱动抛出 `Too big variable` 错误,通常是因为尝试插入或更新的数据超出了数据库字段的最大长度限制。 可能的原因及解决方案 1. 字段长度定义不足 如果在数据库表中定义的字段长度较短,而要插入的数据长度超过了这个限制,就会出现此错误。 示例代码(Java JDBC): ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class DatabaseUpdateExample { public static void main(String[] args) { String url = "jdbc:dm://localhost:5236/yourDatabase"; String username = "yourUsername"; String password = "yourPassword"; try (Connection conn = DriverManager.getConnection(url, username, password)) { // 假设表结构为 id INT, name VARCHAR(10) String sql = "INSERT INTO yourTable (id, name) VALUES (?, ?)"; try (PreparedStatement pstmt = conn.prepareStatement(sql)) { pstmt.setInt(1, 1); // 这里的字符串长度可能超过了字段定义的长度 pstmt.setString(2, "This is a very long name that may exceed the limit"); pstmt.executeUpdate(); } } catch (SQLException e) { e.printStackTrace(); } } } ``` 解决方案: - 检查数据库表结构,确认字段的长度是否足够。可以使用 `ALTER TABLE` 语句修改字段长度。例如,将 `name` 字段的长度增加到 50: ```sql ALTER TABLE yourTable MODIFY name VARCHAR(50); ``` 2. 数据类型不匹配 如果使用的数据类型与数据库字段的数据类型不兼容,也可能导致类似错误。 解决方案: - 确保代码中使用的数据类型与数据库字段的数据类型一致。例如,如果数据库字段是 `INT` 类型,代码中就应该使用 `setInt` 方法。 3. 批量插入数据问题 在批量插入数据时,如果某条数据的长度超过了字段限制,也会出现此错误。 解决方案: - 在插入数据之前,对数据进行验证,确保每条数据的长度都在字段允许的范围内。 需要小心处理的地方 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 修改字段长度时,要考虑数据库中已有数据的兼容性,避免数据截断。 2. 在批量插入数据时,要做好数据验证,防止因某条数据异常导致整个插入操作失败。 3. 注意不同数据库系统对字段长度和数据类型的限制可能不同,编写代码时要考虑兼容性。 [2025-09-08 14:13:20 | AI写代码神器 | 667点数解答]
- dm.jdbc.driver.dmexception: 数据溢出 at dm.jdbc.driver.dberror.throwexception(dberror.java:636) at dm.jdbc.c.b.p.s(msg.java:225) at dm.jdbc.c.b.p.p(msg.java:185) at dm.jdbc.c.b.p.o(msg.java:166) at dm.jdbc.c.a.a(dbaccess.java:776) at dm.jdbc.c.a.a(dbaccess.java:327) at dm.jdbc.c.a.a(dbaccess.java:435) at dm.jdbc.driver.dmdbpreparedstatement.executeinner(dmdbpreparedstatement.java:284) at dm.jdbc.driver.dmdbpreparedstatement.do_executequery(dmdbpreparedstatement.java:383) at dm.jdbc.driver.(598点数解答 | 2024-10-15 15:48:38)204
- 问题排查:dm.jdbc.driver.dmexception: 数据溢出 at dm.jdbc.driver.dberror.throwexception(dberror.java:636) at dm.jdbc.c.b.p.s(msg.java:225) at dm.jdbc.c.b.p.p(msg.java:185) at dm.jdbc.c.b.p.o(msg.java:166) at dm.jdbc.c.a.a(dbaccess.java:776) at dm.jdbc.c.a.a(dbaccess.java:327) at dm.jdbc.c.a.a(dbaccess.java:435) at dm.jdbc.driver.dmdbpreparedstatement.executeinner(dmdbpreparedstatement.java:284) at dm.jdbc.driver.dmdbpreparedstatement.do_executequery(dmdbpreparedstatement.java:383) at dm.jdbc.dr(403点数解答 | 2024-10-15 15:48:41)863
- Error updating database. Cause: dm.jdbc.driver.DMException: Too big variable(667点数解答 | 2025-09-08 14:13:20)19
- master.driver = com.mysql.jdbc.driver master.url = jdbc:mysql://10.9.1.210:3306/drdisplayv3_dev?usessl=false&useunicode=true&characterencoding=utf-8&zerodatetimebehavior=converttonull&transformedbitisboolean=true master.username = root master.password = root 副表配置 slave.driver = com.mysql.jdbc.driver slave.url = jdbc:mysql://localhost:3306/drdisplay?usessl=false&useunicode=true&characterencoding=utf-8&zerodatetimebehavior=converttonull&transformedbitisboolean=true slave.username = root slave.pas(92点数解答 | 2024-06-26 15:47:44)256
- master.driver = com.mysql.jdbc.driver master.url = jdbc:mysql://10.9.1.210:3306/drdisplayv3_dev?usessl=false&useunicode=true&characterencoding=utf-8&zerodatetimebehavior=converttonull&transformedbitisboolean=true master.username = root master.password = root 副表配置 slave.driver = com.mysql.jdbc.driver slave.url = jdbc:mysql://localhost:3306/drdisplay?usessl=false&useunicode=true&characterencoding=utf-8&zerodatetimebehavior=converttonull&transformedbitisboolean=true slave.username = root slave.pass(210点数解答 | 2024-06-26 15:49:53)235
- dm.KeyDown (18) 程序_延时 (100) dm.KeyPress (69) 程序_延时 (100) dm.KeyUp (18) 列表框1.插入项目 (0, "执行命令: 开背包", ) .子程序 关背包 dm.KeyDown (18) 程序_延时 (100) dm.KeyPress (69) 程序_延时 (100) dm.KeyUp (18) 列表框1.插入项目 (0, "执行命令: 关背包", ) ,这样的命令怎样封装成一个子程序,让我能够根据文字调用这个子程序里的某个命令 (394点数解答 | 2025-08-13 05:46:42)44
- cause: dm.jdbc.driver.dmexception: 收集扩展超出上限(123点数解答 | 2024-11-25 17:59:43)220
- "nested exception is org.apache.ibatis.exceptions.persistenceexception: \r\n### error querying database. cause: org.springframework.jdbc.cannotgetjdbcconnectionexception: failed to obtain jdbc connection; nested exception is com.microsoft.sqlserver.jdbc.sqlserverexception: “encrypt”属性设置为“false”且 “trustservercertificate”属性设置为“true”,但驱动程序无法使用安全套接字层 (ssl) 加密与 sql server 建立安全连接:错误:the server selected protocol version tls10 is not accepted by client preferences [tls12]。 clientconnectionid:ec54cc45-3(205点数解答 | 2024-09-04 19:14:42)287
- slave: # 从数据源开关/默认关闭 enabled: true type: com.alibaba.druid.pool.druiddatasource driver-class-name: com.microsoft.sqlserver.jdbc.sqlserverdriver url: jdbc:sqlserver://192.168.1.200:1433;database=waterdangerdb;selectmethod=cursor;encrypt=false;trustservercertificate=true username: sa password: jakj1! 我是这样写的 目标服务器是sql server 2008 这个改不了 我在本地使用连接是没问题的 但是用mavan打成jar包放到服务器上 就连接不上了(222点数解答 | 2024-09-05 10:16:03)187
- import mysql.connector from database import Database # 引入 Database 类 from flask import Flask, render_template, request, redirect, url_for, flash, session, jsonify import pymysql from pymysql import Error import json from datetime import datetime app = Flask(__name__) app.secret_key = 'your_secret_key' # 用于闪现消息 # 定义饮食偏好和口味的映射关系 DIET_PREFERENCE_MAPPING = { 1: "低脂", 2: "高蛋白", 3: "素食", 4: "无糖", 5: "低盐", 6: "高纤维" } TASTE_PREFERENCE_MAPPING = { 1: "甜", 2: "咸", 3(33点数解答 | 2025-05-12 22:13:16)80
- 最后一次提交时间:2025-07-10 21:24:47 得分:0.00 WA e01.c: Wrong e02.c: Error: Invalid variable name '_' Error: Undeclared variable '_' /usr/bin/ld: /tmp/cc6l5bH4.o: in function `main': (.text+0x3b): undefined reference to `_ANJDFnjkl_jnnjk121212' /usr/bin/ld: (.text+0x49): undefined reference to `_ANJDFnjkl_jnnjk121212' /usr/bin/ld: (.text+0x57): undefined reference to `_ANJDFnjkl_jnnjk121212' /usr/bin/ld: (.text+0x66): undefined reference to `_ANJDFnjkl_jnnjk121212' collect2: error: ld returned 1 exit (857点数解答 | 2025-07-10 21:26:21)87
- + make tini-static Scanning dependencies of target tini-static [100%] Building C object CMakeFiles/tini-static.dir/src/tini.c.o Linking C executable tini-static /usr/bin/ld: cannot find -lc collect2: error: ld returned 1 exit status make[3]: *** [tini-static] Error 1 make[2]: *** [CMakeFiles/tini-static.dir/all] Error 2 make[1]: *** [CMakeFiles/tini-static.dir/rule] Error 2 make: *** [tini-static] Error 2 error: Bad exit status from /var/tmp/rpm-tmp.0XoVnu (%build)(264点数解答 | 2025-05-24 02:02:15)149