2013-03-12 88 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

相关问题