我有一个正在尝试用testcontainers测试的应用程序。数据库是来自testcontainers的oracle-xe。属性文件具有用于自动发现模式的属性jpa.hibernate.ddl-auto = true。这里的问题是,我有来自几个模式/用户的实体,这似乎不能很好地使用oracle-xe testcontainer (如果我从实体的@Table注释中删除de属性'schema‘,它工作得很好)。
我使用schema.sql文件作为变通方法来加载模式,它工作得很好,但我希望在没有这个文件的情况下也能实现同样的效果。有没有人知道为什么会发生这种行为,以及如何修复它?
发布于 2021-05-14 15:47:44
您可以创建自己的Oracle映像,在其中创建各种模式,然后将此映像与TestContainers一起使用。
发布于 2021-07-08 23:33:40
如果这还是个问题..。这是我的两分钱。
用户和模式是否不同?如果是这样的话,您可能需要手动为模式创建一个用户(提示...创建用户会为给定的用户名创建模式)。来自甲骨文关于CREATE SCHEMA的官方文档
备注:
此语句实际上并不创建模式。Oracle数据库会在您创建用户时自动创建方案(请参阅创建用户)。该语句允许您使用表和视图填充您的模式,并授予对这些对象的特权,而不必在多个事务中发出多个SQL语句。
此外,您可能需要一些额外的授权等,以确保连接到数据库的用户和与模式相关的用户具有足够的权限。
示例:
CREATE USER <USERNAME> IDENTIFIED BY <password>;
GRANT UNLIMITED TABLESPACE TO <USERNAME>;
GRANT CREATE SESSIONT TO <USERNAME>;
GRANT CONNECT, RESOURCE, DBA TO <USERNAME>;仅供参考。我不是,也不会自称是数据库专家。因此,请与您的DBA确认一下;)
考虑到testcontainer的oracle DB镜像的额外信息
在类似的情况下,我使用this博客的部分内容创建了一个没有数据量的oracle-image。这允许DB的初始化状态。
https://stackoverflow.com/questions/67530668
复制相似问题