Spring Data 库迁移到Oracle,找不到表

rlcwz9us  于 2023-06-22  发布在  Oracle
关注(0)|答案(1)|浏览(138)

我有一个春 Boot 申请表
我已经将数据库从postres 11迁移到oracle 19 c。
迁移进行得很顺利,我可以看到表和行。
应用程序正常启动,甚至创建了一些HT_ tables,因此连接正常。当我试图通过hibernate执行查询时,我得到了未找到的表
SQL错误:942,SQLState:42000 ORA-00942表或视图不存在
我已经激活了额外的日志记录,但这并没有真正帮助我。
我可以看到数据库中的表,所以我不知道如何调试问题,有什么建议吗?

ojsjcaue

ojsjcaue1#

在Oracle中,标识符区分大小写。但是,如果您有未加引号的标识符:

SELECT name, age FROM schema_name.table_name;

然后,当SQL引擎解析数据库中的语句时,它会隐式地将未加引号的标识符转换为大写,并且查询有效地:

SELECT "NAME", "AGE" FROM "SCHEMA_NAME"."TABLE_NAME";

这意味着如果你总是使用不带引号的标识符,那么你可以使用任何你想要的大小写(而且数据库似乎对标识符不区分大小写)。
如果你的标识符是小写的,那么你需要显式地使用小写的引用标识符:

SELECT "name", "age" FROM "schema_name"."table_name";

在Sping Boot 中,您可以检查日志并查看正在生成的语句,并尝试在数据库中运行它,您应该会看到相同的错误。
要修复它,您可以尝试this question中的建议,包括:

  • 更新应用程序属性中的命名设置;或
  • 在实体中的表/列名中包括引号。

相关问题