2013-03-12 67 views
1

我收到以下錯誤:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException - 在字段列表未知列

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'userId' in 'field list'

這是造成此錯誤的代碼是這樣的:

PreparedStatement pstmt = 
    con.prepareStatement(
     "INSERT INTO " + 
     tableName + 
     " (userId,username,email,password) VALUES (?,?,?,?)"); 

我的表被用下面的命令

stmt.executeUpdate(
    "CREATE TABLE " + 
    tableName + 
    " (" + 
    " userId INT, " + 
    " userName VARCHAR(255) NOT NULL, " + 
    " email VARCHAR(255) NOT NULL, " + 
    " password VARCHAR(255), " + 
    " PRIMARY KEY(userId)" + 
    ")"); 
stmt.close(); 

創建人可以幫我發現我的錯誤(如有)。我在這方面是一個新手,所以我很努力地找到錯誤的確切位置。

+0

在您準備語句的那一刻,'tableName'是否包含您期望的值? – 2013-03-12 01:54:49

+0

您的錯誤顯示列名userid中的「i」很小。它不應該是資本? – 2013-03-12 01:59:05

+0

@ShashankKadne MySQL列名不區分大小寫,但表名通常是。 http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html – 2013-03-12 02:01:48

回答

1

該錯誤是因爲已經存在具有相同表名的另一個表。

+0

這個答案和@Perception評論一樣嗎? – 2013-03-12 02:13:30

+0

@IswantoSan是的。它是。但我不知道如何標記Perception。無論如何,我高舉他的答案。 – 2013-03-12 02:17:52

1

另一個要看的是觸發器。我得到相同的錯誤,並最終確定錯誤是由觸發器語句而不是插入語句引起的。 「未知列」在觸發器試圖插入的表格中。

0

如果您使用插入語句,並且存在列值缺失或爲空。它可以給這個錯誤。我正在使用準備好的聲明。對於具有數字數據類型的列,我得到了此錯誤。這個的根本原因是作爲列值傳遞的空字符串。奇怪的是它會拋出「未知列」e

相關問題