'ORA-06413: соединение не открыто' только на сервере rails
Я довольно новичок в rails. У меня проблема с Оракулом. Я всегда получаю ошибку ORA-06413: Connection not open от oracle, когда я запускаю сервер rails
Я использую эту конфигурацию
Рубин '2.6.3'
драгоценный камень 'рельсы', '~> 5.2.3'
драгоценный камень 'pg', '= 0.18.1'
драгоценный камень 'ruby-oci8', '~> 2.2.4'
драгоценный камень 'activerecord-oracle_enhanced-adapter','~> 5.2.3'
...
Моя база данных.yml-это
oracle_db:
адаптер: oracle_enhanced
база данных: //192.168.0.2:1521/производство
имя пользователя: username
пароль: пароль
развитие:
пул: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
адаптер: postgresql
кодировка: unicode
имя пользователя: username
пароль: пароль
ведущий: 192.168.0.3
база данных: my_db
Я написал этот класс для извлечения кода последнего человека, вставленного в oracle DB
класс Oracle < ActiveRecord::Base
establish_connection :oracle_db
область применения :открыть, -&ГТ; { где(поле: 'ФК').заказа(created_at: :по убыванию) }
деф селф.GetLastPersonCode
myquery = "SELECT CODE FROM table WHERE ROWNUM = 1 ORDER BY CODE DESC"
результат = self.connection.select_one(myquery)
если результат["код"].nil?
код = "NEW200000"
еще
записи = результат["код"].to_s.прокладка
код = "новый"+(запись[3..].to_i+1).to_s
конец
код возврата
конец
конец
Когда я вставляю нового человека в свою базу данных PG, я хочу найти последний код в oracle_db и создать новый. Я использую этот код
@человек = человек.новый(person_params_post)
@человек.код = Оракул.GetLastPersonCode
@человек.сохранить
Теперь все работает нормально, но когда я пытаюсь восстановить код, я получаю ошибку "ORA-06413: соединение не открыто". Дело в том, что я не объясняю, что... если из консоли rails я запускаю Oracle.GetLastPersonCode я правильно восстанавливаю код человека. Я использую код visual studio на Debian Buster.
Что изменилось между серверной и консольной средой?
Что я уже пробовал:
Rails console Loading development environment (Rails 5.2.4.1) 2.6.3 :001 > Oracle.GetLastPersonCode (1163.3ms) SELECT ....WHERE ROWNUM = 1 => "CFC192957"