作为模式的用户或所有者运行 DBUnit 之间有区别吗

发布于 2024-12-10 07:42:39 字数 650 浏览 0 评论 0原文

目前我正在使用 DBUnit 来测试我的网络服务。

当我使用架构的所有者指定数据库用户凭据时,一切正常。

如果我将数据库凭据更改为以用户身份登录,我会得到:

> [Main Thread] ERROR org.dbunit.database.DatabaseDataSet - Table   
> 'ens_mrm_configuration' not found in   
> tableMap=org.dbunit.dataset.OrderedTableNameMap[_tableNames=[],   
> _tableMap={}, _caseSensitiveTableNames=false]

我知道所有者应该首先为我想要访问的所有表授予 SELECT、UPDATE 和 INSERT (所以我就是这么做的) 我还创建了 SYNONYMS 来引用实际的表格。最后,这两个场景都有效,但是如果我以用户身份运行测试,则第一个测试会失败并出现此错误。

那么 DBUnit 处理这个问题的方式有什么不同吗?我目前正在使用 dbunit 2.4.8 和 SpringJUnit。

更新 所以我发现我犯了一个错误。测试实际上并没有 当我使用用户凭据进行测试时,它完全可以工作。

Currently I'm using DBUnit for testing my webservices.

When I specify the db user credentials with the OWNER of the schema everything works just fine.

If I change the db credentials to login as a USER I get:

> [Main Thread] ERROR org.dbunit.database.DatabaseDataSet - Table   
> 'ens_mrm_configuration' not found in   
> tableMap=org.dbunit.dataset.OrderedTableNameMap[_tableNames=[],   
> _tableMap={}, _caseSensitiveTableNames=false]

I'm aware the the OWNER should first grant SELECT, UPDATE and INSERT for all tables I want to access (so I did just that) I also created SYNONYMS to refer to the actual tables. In the end both scenario's work, but the first test fails with this ERROR If I run the tests as a USER.

So is there a difference how DBUnit handles this? Im currently working with dbunit 2.4.8 and SpringJUnit.

UPDATE
So I found out that I made a mistake my bad. The tests actually don't
work at all when I test with the USER credentials.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

许仙没带伞 2024-12-17 07:42:39

您究竟是如何创建同义词的?

在 Oracle 中,同义词可以是公共的(在这种情况下,它对所有用户可见)或私有的(在这种情况下,它仅对同义词的所有者可见)。您正在创建公共同义词吗?或者您正在创建私人同义词?

公共同义词是使用 PUBLIC 关键字创建的

CREATE PUBLIC SYNONYM ens_mrm_configuration
   FOR schema_owner.ens_mrm_configuration

,而私有同义词则不是。

CREATE SYNONYM ens_mrm_configuration
   FOR schema_owner.ens_mrm_configuration

如果您要创建私有同义词,则需要在 USER 架构中创建同义词。

如果您以 USER 身份登录,您可以运行此查询并发布结果吗

SELECT owner, object_name, object_type
  FROM all_objects
 WHERE object_name = 'ENS_MRM_CONFIGURATION';

Exactly how are you creating the synonyms?

In Oracle, a synonym can be either public (in which case it is visible to all users) or private (in which case it is visible only to the owner of the synonym). Are you creating public synonyms? Or are you creating private synonyms?

Public synonyms are created using the PUBLIC keyword

CREATE PUBLIC SYNONYM ens_mrm_configuration
   FOR schema_owner.ens_mrm_configuration

while private synonyms are not

CREATE SYNONYM ens_mrm_configuration
   FOR schema_owner.ens_mrm_configuration

If you are creating private synonyms, the synonyms need to be created in the USER schema.

If you log in as USER, can you run this query and post the results

SELECT owner, object_name, object_type
  FROM all_objects
 WHERE object_name = 'ENS_MRM_CONFIGURATION';
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文