我有一个春 Boot 申请表我已经将数据库从postres 11迁移到oracle 19 c。迁移进行得很顺利,我可以看到表和行。应用程序正常启动,甚至创建了一些HT_ tables,因此连接正常。当我试图通过hibernate执行查询时,我得到了未找到的表SQL错误:942,SQLState:42000 ORA-00942表或视图不存在我已经激活了额外的日志记录,但这并没有真正帮助我。我可以看到数据库中的表,所以我不知道如何调试问题,有什么建议吗?
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中的建议,包括:
1条答案
按热度按时间ojsjcaue1#
在Oracle中,标识符区分大小写。但是,如果您有未加引号的标识符:
然后,当SQL引擎解析数据库中的语句时,它会隐式地将未加引号的标识符转换为大写,并且查询有效地:
这意味着如果你总是使用不带引号的标识符,那么你可以使用任何你想要的大小写(而且数据库似乎对标识符不区分大小写)。
如果你的标识符是小写的,那么你需要显式地使用小写的引用标识符:
在Sping Boot 中,您可以检查日志并查看正在生成的语句,并尝试在数据库中运行它,您应该会看到相同的错误。
要修复它,您可以尝试this question中的建议,包括: