2012-03-21 2 views
8

У меня есть сервер под управлением Oracle, IP - 192.168.1.50.Не удается подключить мое приложение rails к Oracle

В моем Linux-окне мне нужно подключиться к этому серверу Oracle. Затем я установил Oracle Instant клиент и установить переменные окружения соответственно:

OCI_INCLUDE_DIR =/дом/Luc/instantclient_11_2/SDK/включить
LD_LIBRARY_PATH =/дом/Luc/instantclient_11_2
DYLD_LIBRARY_PATH =/дом/Luc/instantclient_11_2/
OCI_LIB_DIR =/дом/Luc/instantclient_11_2
ORACLE_HOME =/дом/Luc/instantclient_11_2

Я также установил соответствующий камень:

ruby-oci8 (2.1.0) 

После того, как я определил мои модели и побежал грабли БД: мигрировать я получил следующее сообщение об ошибке:

rake aborted! 
ORA-12154: TNS:could not resolve the connect identifier specified 
oci8.c:360:in oci8lib_191.so 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/ruby-oci8-2.1.0/lib/oci8/oci8.rb:123:in `initialize' 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-oracle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:319:in `new' 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-oracle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:319:in `new_connection' 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-oracle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:429:in `initialize' 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-oracle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:24:in `new' 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-oracle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:24:in `initialize' 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-oracle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanced_connection.rb:9:in `new' 
.... 

мой database.yml является:

development: 
    adapter: oracle_enhanced 
    host: 192.168.1.50:1521/orcl 
    username: USER 
    password: PASS 

соединение SQLPLUS отлично работает, хотя:

sqlplus USER/[email protected]:1521/orcl 

SQL*Plus: Release 11.2.0.3.0 Production on Wed Mar 21 17:34:26 2012 

Copyright (c) 1982, 2011, Oracle. All rights reserved. 


Connected to: 
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production 
With the Partitioning, OLAP, Data Mining and Real Application Testing options 

SQL> 

Есть ли что-то в этом conf?

UPDATE

Я тестировал из командной строки и соединение работает нормально:

рубин -rubygems -e «требуют" oci8; OCI8.new ('USER', 'PASS' ., '192.168.1.50/ORCL') Exec ('* выберите из пользователей') делать | г | ставит r.join (''); конец»

=> OK

То же самое и с IRB :

ActiveRecord::Base.establish_connection(:adapter => "oracle_enhanced", :database => "//192.168.1.50/orcl",:username => "USER",:password => "PASS") 

=> OK

, но до сих пор не работает с моей рельсы приложения.

UPDATE 2

Использование базы данных вместо хоста исправили вещь:

development: 
    adapter: oracle_enhanced 
    database: //192.168.1.50:1521/orcl 
    username: USER 
    password: PASS 

ответ

9

Использование базы данных вместо хоста исправили вещь:

development: 
    adapter: oracle_enhanced 
    database: //192.168.1.50:1521/orcl 
    username: USER 
    password: PASS 
+1

я как определено; проблема с удалением хоста. – tamersalama

2

Если вы хотите использовать синтаксис EZConnect для подключения к Oracle, то host в файле database.yml должны были бы включают в себя ведущие косые черты, т.е.

host: //192.168.1.50:1521/orcl 

Есть примеры других способов настройки Rails для доступа к базе данных Oracle в этой статье OTN по адресу Connecting to Oracle in Ruby on Rails.