2014-09-12 101 views
0

我有一個非常簡單的數據庫MySQL的,在字段列表未知列

create table if not exists customerdata(id VARCHAR(40) primary key, obj blob) 

一個程序使用JDBC調用這個程序更新此表

create procedure saveCustomer(IN customerid VARCHAR(40), IN customerobj blob) 
BEGIN 
INSERT INTO customerdata (id, obj) VALUES(customerid, customerobj) 
ON DUPLICATE KEY UPDATE obj = VALUES(customerobj); 
END 

byte[] byteArray = bos.toByteArray(); 
String sql = "call saveCustomer(?,?)"; 
ps = connection.prepareStatement(sql); 
ps.setString(1,customerid); 
ps.setBytes(2,byteArray); 
ps.execute(); 

但結果我得到以下異常:

com.mysql.jdbc.exceptions.jdbcd4.MySQLSyntaxErrorException: Unknown column 'customerobj' in 'field list' 

當我嘗試從mysql工作臺調用過程時發生同樣的錯誤。

回答

2

問題是on duplicate key。它應該是:

INSERT INTO customerdata (id, obj) VALUES(customerid, customerobj) 
ON DUPLICATE KEY UPDATE obj = customerobj; 

或:

INSERT INTO customerdata (id, obj) VALUES(customerid, customerobj) 
ON DUPLICATE KEY UPDATE obj = VALUES(obj); 

values()聲明表中使用的列名,而不是價值本身。

我也建議你用v_之類的東西加前綴參數,所以它們不太可能與列名混淆。

相關問題