SQLITE_ERROR报错:表无errno列,新增USR_IMG列后插入用户遇问题
解决SQLITE_ERROR: table has no column named errno的问题
嘿,这个报错有点蹊跷啊——你写的插入语句里根本没用到errno字段,但数据库却提示这个字段不存在。我帮你梳理几个排查方向,应该能找到问题:
1. 先确认表结构是不是真的更新了
你说已经给USERS表加了USR_IMG列,但SQLite有时候会因为连接缓存或者执行问题,导致表结构没真正生效。你可以直接跑这条SQL看看当前表的真实结构:
PRAGMA table_info(USERS);
检查返回结果里有没有USR_IMG列,同时留意下有没有errno列(按你的表定义,这个字段本来就不该存在,报错里提到它才是关键)。
2. 检查完整的插入SQL语句
你贴的代码只写到VALUES ($u...,会不会完整语句里不小心写错了字段?比如是不是复制粘贴时带了多余的errno,或者拼写错误把某个字段写成了errno?正确的插入语句应该和你的表字段一一对应,比如:
var salt = createSalt(); // 假设你有密码加密逻辑 var encryptedPwd = hashPassword(userInputPwd, salt); db.run( 'INSERT INTO USERS (USR_NAME, USR_ORGANIZATION, USR_MAIL, USR_PASSWORD, USR_IMG) VALUES (?, ?, ?, ?, ?)', [userName, userOrg, userMail, encryptedPwd, userImgPath], function(err) { if (err) { console.error('插入失败:', err.message); return; } console.log('新用户添加成功'); } );
仔细核对你的SQL语句里有没有误写的errno字段,这大概率是报错的源头。
3. 排查有没有其他代码在改表结构
有没有其他地方的代码在操作USERS表?比如有没有执行过写错字段的ALTER TABLE语句,或者有其他进程在访问这个数据库文件?SQLite是文件型数据库,要是有其他程序占用文件,可能会导致结构更新不生效。
4. 试试重启应用
有时候应用会缓存数据库连接或表结构,新增列后需要重启才能识别到更新。先把你的服务关掉再重新启动,然后再执行插入操作看看。
内容的提问来源于stack exchange,提问作者Antman
相关产品推荐
相关产品推荐

