2014-06-24 68 views
0

感謝您的時間Spring MVC的數據庫錯誤JDBC

我正在爲我的項目有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) 

驅動程序將SQL語句公共無效insertData(驅動程序驅動程序) { 字符串的sql = 「INSERT INTO司機」 +「(DL號,DNAME,年齡,經驗)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()}); 


}      
+1

您堆棧跟蹤包含'列「TRegnNo」不能null'。您試圖爲具有非空約束的數據庫列設置空值 – geoand

+0

錯誤「*列」TRegnNo'不能爲空*「對我來說很清楚。 –

+0

例外清楚地說'列'TRegnNo'不能爲空' – Sadikhasan

回答

1

TRegnNo不能爲空。您必須爲此行分配一個(唯一)值。

+0

但我沒有在卡車表中輸入。我添加了一個新的驅動程序,然後爲什麼它給我一個'TRegNo'的錯誤,因爲它們在該名稱的驅動程序表中沒有列。 – user3480311

+0

看來,當你添加一個驅動程序,它會觸發卡車表的這個其他SQL。看看你的數據庫管理器是否有這樣的觸發器。 – Paul

+0

您好保羅我已經分享了我的代碼添加驅動程序並添加卡車modules.Please提供您的可變的反饋。 – user3480311

0

退房這個:

堆棧跟蹤包含Column 'TRegnNo' cannot be null指向約束在卡車表,如主鍵或外鍵等。