昨天在idea中使用jdbc向mysql数据库插入数据时,报以下错误信息: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘uid’ in 'field list’
直觉反应是数据库字段和sql语句字段不一致。所以就核对表字段。打开Navicat连接mysql,查看表设计,如下图:
编写的sql语句如下:
<sql id="insertFields">
username, password, salt, email, type, status, activation_code, header_url, create_time
</sql>
<insert id="insertUser" parameterType="com.nowcoder.entity.User" keyProperty="uid">
insert into user (<include refid="insertFields"></include>)
values (#{username}, #{password}, #{salt}, #{email}, #{type}, #{status}, #{activationCode}, #{headerUrl}, #{createTime})
</insert>
初看字段一致,还以为记错了,难道不是字段不一致的问题?于是google了一番,确定还是字段不一致。在idea中debug调试了一下,还是在sql位置报错。
明明字段看着写的没错,但就是报错,很是纠结。
正如上图所示,user_id看不到了,还以为按成删除键给删掉了呢。赶紧将光标右移一下,user_id又出来了。于是断定字段名里有换行,切换到sql预览,查看创建表sql,果然有换行,如下图:
到此问题解决。
教训:核对字段是否一致时,最靠谱的方式就是直接看创建表的语句,能避免由于特殊字符引起。