You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ORA-00984:INSERT语句报"Column not allowed here"错误原因排查

第一版代码错误原因

  • login_id字段定义为INTEGER整数类型,插入语句中给该字段传的是用单引号包裹的字符串格式值'9'、'10',在做严格类型校验的数据库中会触发类型不匹配的Column not allowed here错误,去掉数值两侧的单引号即可。
-- 修正后的第一版插入语句
INSERT INTO login (login_id, username, password) 
VALUES (9, 'Mukov', '1884');
INSERT INTO login (login_id, username, password) 
VALUES (10, 'Mukre', '661');

第二版修改后代码错误原因

  1. 插入列和传入值数量不匹配:INSERT语句指定要插入的列是username、password共2个字段,但VALUES后提供了3个值,多写的'1'、'2'实际是要赋值给login_id的,需要在插入列列表中补上login_id字段。
  2. 主键非空约束问题:login_id是主键非空字段,如果你没有提前给该字段设置自增序列/默认值,插入时不传入该字段的值也会触发约束报错。
  3. 如果你使用的是Oracle数据库,匿名块BEGIN END结束后需要补充/才会正常执行。
-- 修正后的第二版代码(未设置login_id自增的场景)
CREATE TABLE login
(
    login_id INTEGER PRIMARY KEY,
    username varchar(150) NOT NULL,
    password varchar(150) NOT NULL
);

BEGIN
    INSERT INTO login (login_id, username, password)
    VALUES (1, 'Sukre', '1234');
    INSERT INTO login (login_id, username, password) 
    VALUES (2, 'Pal', '123444');
END;
/

内容的提问来源于stack exchange,提问作者ek.Nik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:06:03