【发布时间】:2014-08-14 06:50:01
【问题描述】:
感谢您的宝贵时间
我收到一个错误,因为我的项目有 2 个模块添加驱动程序和添加卡车,我正在为这两个模块执行 sql 查询,但是当我执行 addDriver 模块的查询时,数据库异常抛出声明
org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT INTO truck(TRegnNo,VendorName,PurchaseDate,Price,RepairDate,InvoiceNo,RepairCost) VALUES(?,?,?,?,?,?,?)]; Column 'TRegnNo' cannot be null; nested exception is com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Column 'TRegnNo' cannot be null
org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:101)
driver insert sql 语句 public void insertData(Driver driver) { String sql = "INSERT INTO driver" + "(DLNo,DName,Age,Experience) VALUES (?,?,?,?)"; JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(sql, new Object[] {driver.getLicenseNumber(),driver.getDriverName(),driver.getAge(),driver.getExperience()});
} Truck Insert code public void insertData(Truck truck)
{
String sql = "INSERT INTO truck" + "(TRegnNo,VendorName,PurchaseDate,Price,RepairDate,InvoiceNo,RepairCost) VALUES(?,?,?,?,?,?,?)";
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(sql , new Object[] {truck.getTregNo(),truck.getVendorName(),truck.getPurchaseDate(),truck.getPrice(),truck.getRepairDate(),truck.getInvoiceNo(),truck.getRepairCost()});
}
【问题讨论】:
-
您的堆栈跟踪包含
Column 'TRegnNo' cannot be null。您正在尝试将空值设置为具有非空约束的 DB 列 -
错误“Column 'TRegnNo' cannot be null”对我来说很清楚。
-
异常清楚地说
Column 'TRegnNo' cannot be null -
但我没有在卡车表中输入。我正在添加一个新驱动程序,然后为什么它给我一个“TRegNo”错误,因为它们在其中没有该名称的列。
-
堆栈跟踪应该比这更长,并且在某一刻,您应该从源代码中找到一行。查看该行发生的情况并显示完整文件或至少周围的一些行。
标签: java mysql sql spring jdbc