我正在寻找一个同时支持 SQL 限制和事务的 DBI(或类似)代理。我知道的两个是:
DBD::Proxy
DBD::Gofer
DBD::代理
我发现的问题DBD::Proxy
是它的服务器,DBI::ProxyServer
不仅限制通过网络进入的查询(我想要的),而且还限制了数据库驱动程序内部生成的查询。因此,例如, with DBD::Oracle
、 ping 以及它自己发出的许多其他查询不再起作用。
我不能只允许他们,因为:
- 那是相当多的 DBD::Oracle 内部知识,而且非常脆弱。
- 白名单是
query_name => 'sql'
,query_name
传递给的第一个词在哪里prepare
。DBD::Oracle 有很多内部查询,其中很多的第一个词是select
(duh)。
所以,我似乎无法使用DBD::Proxy
DBD::Gofer
我没有尝试过 DBD::Gofer,因为文档似乎告诉我我不能通过它使用事务:
约束
...
您不能使用交易
仅自动提交。不支持交易。
那么,在我编写自己的应用程序特定代理(使用RPC::PLServer
?)之前,是否有代码可以解决这个问题?