(Ruby) ActiveRecord с PG попробуйте подключиться с локальным пользователем к удаленному серверу - PullRequest
1 голос
/ 19 августа 2011

Я создал программу для простого создания резервных копий с удаленного сервера и создал базу данных в postgresql для сохранения информации и планирования резервного копирования.

Соединение с БД было сделано с ActiveRecord, я настроил для доступа внутреннюю БД (на другом сервере), но когда я пытаюсь подключиться к удаленной БД, я получаю это сообщение:

/usr/lib/ruby/1.8/active_record/connection_adapters/postgresql_adapter.rb:968:in `initialize': FATAL:  no existe el rol <<mi_user_name>> (PGError)
    from /usr/lib/ruby/1.8/active_record/connection_adapters/postgresql_adapter.rb:968:in `connect'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/postgresql_adapter.rb:968:in `connect'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/postgresql_adapter.rb:217:in `initialize'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/postgresql_adapter.rb:37:in `new'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/postgresql_adapter.rb:37:in `postgresql_connection'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:223:in `send'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:223:in `new_connection'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:245:in `checkout_new_connection'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:188:in `checkout'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:184:in `loop'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:184:in `checkout'
    from /usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:183:in `checkout'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:98:in `connection'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:326:in `retrieve_connection'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_specification.rb:123:in `retrieve_connection'
    from /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_specification.rb:115:in `connection'
    from /usr/lib/ruby/1.8/active_record/base.rb:3113:in `quoted_table_name'
    from /usr/lib/ruby/1.8/active_record/base.rb:1684:in `construct_finder_sql'
    from /usr/lib/ruby/1.8/active_record/base.rb:1548:in `find_every'
    from /usr/lib/ruby/1.8/active_record/base.rb:1505:in `find_initial'
    from /usr/lib/ruby/1.8/active_record/base.rb:613:in `find'
    from main.rb:84:in `main'
    from main.rb:126

PG попробуйте подключиться к удаленной БД с моим локальным пользователем, в объявлении ActiveRecord я установил параметры:

require 'active_record'

    ActiveRecord::Base.establish_connection(
        :adapter  => "postgresql",
        :host     => "xxx.xxx.x.101",
        :port     => 5432,
        :database => "VB_DB",
        :user     => "pg_user",
        :password => "blahblah"
    )

Я работаю с Ruby 1.8.7.

Есть идеи по этому поводу?

благодарю за чтение и помогите мне.

Grettings.

EDIT

Я нашел решение:

    ActiveRecord::Base.establish_connection(
        :adapter  => "postgresql",
        :host     => "xxx.xxx.x.101",
        :port     => 5432,
        :database => "VB_DB",
        :username => "pg_user",
        :password => "blahblah"
    )

Я использовал: user и должен быть: username. Позор мне.

1 Ответ

1 голос
/ 23 августа 2011

Из сообщения об ошибке видно, что Postgres не считает, что ваш пользователь существует в базе данных.

Хороший первый шаг для устранения этой проблемы - попытаться подключиться вообще без участия Ruby.Поскольку клиент командной строки 'psql' использует одну и ту же базовую библиотеку (при условии, что для подключения вы используете гем 'pg'), в общем, если вы можете подключиться с помощью этого, у вас должно быть все в порядке для подключения также из Ruby.

Попробуйте:

psql -h xxx.xxx.x.101 -U pg_user -W -l

Если вы увидите ту же ошибку (no existe el rol <<mi_user_name>>), вам нужно будет подтвердить, что ваш пользователь существует, и создать его.

Если он показывает вам список баз данных, мы должны попробовать что-то еще.

...