Не удается подключить мое приложение rails к Oracle - PullRequest
9 голосов
/ 21 марта 2012

У меня есть сервер под управлением Oracle, IP-адрес 192.168.1.50.

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

OCI_INCLUDE_DIR = / home / luc / instantclient_11_2 / sdk / include
LD_LIBRARY_PATH = / home / luc / instantclient_11_2
DYLD_LIBRARY_Pluc / instantclient_11_2 /
OCI_LIB_DIR = / home / luc / instantclient_11_2
ORACLE_HOME = / home / luc / instantclient_11_2

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

ruby-oci8 (2.1.0)

ОднаждыЯ определил свои модели и запустил rake db: migrate. Я получил следующее сообщение об ошибке:

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/PASS@192.168.1.50: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> 

Чего-то не хватает в этом файле?

ОБНОВЛЕНИЕ

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

ruby ​​-rubygems -e "require 'oci8'; OCI8.new ('USER', 'PASS', '192.168.1.50/orcl').exec('select * от пользователей') do | r | putr.join (','); end "

=> OK

То же самое из irb:

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

=> ОК

, но все еще не работает из моего приложения rails.

ОБНОВЛЕНИЕ 2

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

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

Ответы [ 2 ]

10 голосов
/ 12 апреля 2012

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

development:
  adapter: oracle_enhanced
  database:  //192.168.1.50:1521/orcl
  username: USER
  password: PASS
2 голосов
/ 21 марта 2012

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

host: //192.168.1.50:1521/orcl

. Существуют примеры других способов.настроить Rails для доступа к базе данных Oracle в этой статье OTN по Подключение к Oracle в Ruby on Rails .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...