【问题标题】:SPRING MVC database error jdbcSPRING MVC 数据库错误 jdbc
【发布时间】: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


【解决方案1】:

TRegnNo 不能为空。您必须为该行分配一个(唯一的)值。

【讨论】:

  • 但我没有在卡车表中输入。我正在添加一个新驱动程序,那么为什么它给我一个错误“TRegNo”,因为它们在该名称的驱动程序表中没有列。
  • 似乎当你添加一个驱动程序时,它会触发卡车表的另一个 sql。如果有这样的触发器,请查看您的数据库管理器。
  • 嗨,保罗,我已经分享了添加司机和添加卡车模块的代码。请提供您的宝贵反馈。
  • 这个方法被调用的地方:public void insertData(Truck truck)。我的建议是调试代码并查看truck 对象。 Truck.getTRegNo 返回 null 并因此返回错误。
  • 我已经对其进行了调试并追踪了我的错误问题。谢谢
【解决方案2】:

看看这个:

StackTrace 包含Column 'TRegnNo' cannot be null 指向 Truck 表中的约束,如主键或外键等。

【讨论】:

    猜你喜欢
    • 2012-02-16
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多