Oracle列大小写导致的ORA-00904: “XXXX”: 标识符无效。
场景介绍
最近在项目中遇到Oracle库表里面字段有大写和小写的。项目里面使用Mybatis-Plus进行持久层数据交互。但是在进行简单插入接口调用后发现数据库报错。ORA-00904: "XXXX": 标识符无效。经查看发现数据库的字段全是小写的。
场景复现
我在Oracle内复现这个问题。
表结构如下图所示
先模拟Mybatis-Plus编译后的错的语句发出来
insert into TESTLOW (ID, UPNAME) VALUES (1,'aedhlwqedhw');
这个插入语句会报错
而这个语句就会成功
insert into TESTLOW ("id", "testlowname") VALUES (1,'aedhlwqedhw');
区别就在于Oracle会严格区分大小写。一定要小写的话,要把小写字段加上双引号。在进行sql编写。(ps:小写字段使用Mybatis插件的话最好自己手写动态sql语句)。
欢迎大家批评指正!