Кто-нибудь успешно подключился к MySQL из Ruby? - PullRequest
0 голосов
/ 12 января 2009

Я начинаю немного отчаянно пытаться заставить скрипт ruby ​​подключиться к MySQL.

Я отказался от DBI, так как я просто не могу заставить его работать независимо от того, что я делаю. Я подумал, что мне повезет больше с использованием mysql.rb из ruby-mysql. Однако при использовании этого я получаю следующую ошибку:

./mysql.rb:453:in `read': Client does not support authentication protocol requested by server; consider upgrading MySQL client (Mysql::Error)

Я получаю из поискового сообщения об ошибке , что означает, что моя версия MySQL слишком свежая и не поддерживает пароли старого стиля. Я на общем сервере и не имею root-доступа, поэтому не могу внести изменения, рекомендованные для конфигурации MySQL.

Моя версия, кстати, это:

mysql  Ver 14.7 Distrib 4.1.22, for pc-linux-gnu (i686) using readline 4.3

Кому-нибудь удалось получить рубин для подключения к MySQL? Я пробовал под Windows, так как у меня есть доступ с правами администратора на моей машине с Windows, но если есть способ сделать это без root-доступа в Linux, это было бы еще лучше.

Ответы [ 5 ]

2 голосов
/ 13 января 2009

Похоже, вы столкнулись с причудой MySQL. Некоторое время вокруг версии 5.0 они меняли формат паролей подключения. Это легко исправить, хотя: http://dev.mysql.com/doc/refman/5.1/en/old-client.html

(Также ознакомьтесь с гемом Ruby Sequel, он позволяет вам по-настоящему развлекаться со всеми видами баз данных и без дополнительных затрат ActiveRecord: http://sequel.rubyforge.org/documentation.html)

2 голосов
/ 13 января 2009

Вот краткое описание того, как это сделать: http://rubylearning.com/satishtalim/ruby_activerecord_and_mysql.html

1 голос
/ 13 января 2009

У меня не было проблем с подключением к MySQL из Ruby на моих тестовых машинах.

Вы упоминаете, что используете провайдера виртуального хостинга. Если у них есть старая версия ruby-mysql, которая не совместима с паролями нового стиля, возможно, их служба поддержки сможет внести необходимые изменения в пользовательские строки в MySQL.

1 голос
/ 13 января 2009

Что вы хотите сделать? Я думаю, что можно использовать компонент ActiveRecord Rails, чтобы установить соединение с MySQL. Я посмотрю, смогу ли я найти какую-нибудь документацию, подтверждающую это, и я обновлю этот ответ.

ссылка на интеграцию ActiveRecord / MySQL

Обновление: чтобы использовать ActiveRecord для нужной цели, вам нужно будет создать различные классы моделей, которые представляют таблицы, из которых вы извлекаете данные, и указать их взаимосвязи. Как только это будет сделано, вы сможете сделать что-то вроде:

SomeModel.find(:all, :conditions => ['some_column = ?', some_value]

Я использовал этот подход в прошлом, чтобы предоставить моим приложениям на Rails доступ к данным WordPress.

0 голосов
/ 13 января 2009

Возможно, вы используете более старую версию mysql и вам необходимо обновить ее.

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