我正在尝试在我的 rails 应用程序中使用远程数据库。为此,我按照以下说明使用 ruby-oci8:http ://www.pixellatedvisions.com/2009/03/26/rails-on-oracle-part-2-setting-up-rails-to-connect-到 Oracle 数据库
我对第 1 部分没有任何问题,通过 sqlplus 连接到远程数据库,但是当我尝试使用 oci8 时:
ruby -r oci8 -e "OCI8.new('user', 'pass', 'host_ip:port/sid').exec('SELECT * FROM table') {|r| puts ' | ' r.join}"
我得到:
oci8.c:267:in oci8lib_191.so: ORA-06401: NETCMN: invalid driver designator (OCIError)
from -e:1:in `new'
from -e:1:in `<main>'
谷歌搜索这个错误我读了这个http://www.dba-oracle.com/t_ora_06401_netcmn_invalid_driver_designator.htm这对我的情况没有任何帮助。我还读到我应该有一个 TNSNAMES.ORA 文件,但我没有……所以我创建了一个没有任何运气的文件。
顺便说一句,我正在使用 ruby-oci8-2.0.6-x86-mingw32.gem(因为我在 Windows 中)、ruby 1.9.3 和 rails 3.2.3
有什么线索吗?
编辑
谷歌搜索了一下,发现:
- 问题描述:无法在她的某些数据库上运行健康检查。出现错误“ORA-06401: NETCMN: invalid driver designator”,然后运行状况检查显示“连接失败 (1)”的注释。直接从 Toad 的连接窗口连接到该数据库没有问题。
- 原因:特定于在 9i 客户端上使用直接连接并在运行状况检查中选择直接连接数据库的问题。
- 解决方案:解决方案 1:使用不同的方法连接,选择作为 TNS 连接而不是直接连接。在这种情况下,您可以使用 9i 客户端。解决方案 2:使用不同的客户端连接,如果需要使用直接连接,请升级到 10g 或 11g 客户端。