Драйвер MySQL для Rails в Windows 7 x64

У меня проблема с подключением к базе данных MySQL на только что установленной машине с Windows 7. Я получаю эту ошибку, когда пытаюсь перенести свою базу данных.

!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install 
the mysql gem and try again: gem install mysql.
rake aborted!
193: %1 is not valid Win32 application - C:/Ruby/lib/ruby/gems/1.8/gems/mysql-2.8.1-x86-mswin32/lib/1.8/mysql_api.so

в настоящее время я установил

ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]
mysql version 5.0.86  for Win64
gem 1.3.1
mysql-2.8.1-x86-mswin32

person Jakub Arnold    schedule 12.10.2009    source источник


Ответы (10)


У моего коллеги была аналогичная проблема при запуске rails в Windows 7. Ему пришлось заменить libmySQL.dll (в PATH) на файл из InstantRails.

person Harish Shetty    schedule 18.10.2009
comment
круто, это работает :) (как на машине с Win7, так и на Vista) ... вы спасли мне жизнь, большое спасибо - person Jakub Arnold; 18.10.2009
comment
Спасибо! Из-за этого я не смог выполнить разработку рельсов для окон. Сейчас все лучше. - person captncraig; 08.02.2010
comment
Просто к вашему сведению, указанный выше PATH (по умолчанию): C:\Program Files\MySQL\MySQL Server 5.1\bin\libmySQL.dll Переименуйте этот файл и замените его файлом, описанным выше. - person aronchick; 04.03.2010
comment
Спасибо, а что будет со следующим обновлением Rails (или MySQL)? Нужно ли нам отслеживать случайные библиотеки DLL, которые нам нужно бросать туда и сюда, чтобы заставить это работать? Мне кажется взлом. Я новичок в RoR и очень хочу воспользоваться преимуществами, о которых так много слышал (из мира C#, .NET). Я понимаю на высоком уровне преимущества открытого исходного кода, облегченного языка и фреймворка (по сравнению со стеком Microsoft), но некоторые решения странных проблем, которые я исследую, кажутся очень случайными. Это я? ;) - person Mark Freedman; 25.07.2010
comment
Хвала БОГУ. Это решение работает для меня. Некоторое время боролся с этим, и это заставило его работать ... как раз тогда, когда я собирался сдаться :) - person marcamillion; 12.10.2010
comment
Предупреждение. Я бросил libmysql.dll где-то на своем пути и в конце концов смог gem install mysql2 скомпилировать. Однако, когда я действительно начал использовать гем, как в rake db:migrate, он побледнел с ошибкой, похожей на «Этот гем скомпилирован для версии 5.5.14, но клиентская библиотека 5.0.27». - person seehad; 11.07.2011

Я потратил часы, пытаясь заставить MySQL и Rails нормально работать в Windows (хотя и в XP, и в 32-, и в 64-разрядных версиях). В конце концов я сдался, так как на моей рабочей машине работал Linux (на котором очень хорошо работают Rails и MySQL) и я просто использовал SQLite 3 для разработки. Никаких головных болей, чтобы заставить его работать, и он работает достаточно быстро для целей разработки.

Тем не менее, я слышал о некоторых людях, которым посчастливилось заменить одну из DLL, предоставленных gem, на другую, предоставленную официальным дистрибутивом MySQL. Кроме того, у некоторых людей просто не было этой DLL, что вызывало проблемы. В конце концов, у меня это не сработало, но, надеюсь, вам повезет больше.

person Topher Fangio    schedule 12.10.2009
comment
хорошая идея о sqlite, но, к сожалению, ни то, ни другое не работает: \ см. заголовок stackoverflow.com/questions/1557414/ - person Jakub Arnold; 13.10.2009
comment
@Darth - Чувак, это отстой. У меня никогда не было проблем с SQLite. Я предполагаю, что это как-то связано с 64-разрядной версией или с Windows 7, а у меня Mac, поэтому я больше не могу проводить тестирование. Есть и другие базы данных, которые поддерживает Rails. Чтобы сориентироваться, вы можете попробовать один из них. - person Topher Fangio; 13.10.2009
comment
@Topher Fangio: К сожалению, вы правы насчет Win7. Проблема с sqlite заключалась в том, что я не получил ошибку об отсутствующей dll, которая отображается в Vista, но Win7 почему-то ничего не показал (stackoverflow.com/questions/1557414/). Прямо сейчас я работаю с SQLite над разработкой, и это работает очень хорошо, потому что мой рабочий сервер находится на Linux VPS, так что проблем нет. У меня еще больше проблем с обработкой изображений, которая также полна ошибок на Vista x64 :( Я думаю, это один из тех случаев, когда люди переключают ОС :) - person Jakub Arnold; 15.10.2009
comment
@Darth Извините, что это не работает, но я ожидал этого от Windows. С другой стороны, мой Mac вышел из строя, и Java не загружалась. После переустановки я, наконец, понял, что это был поврежденный файл в моем домашнем каталоге, поэтому я думаю, что у каждой ОС есть свои особенности. - person Topher Fangio; 15.10.2009

Для Rails или DataMapper или чего-то еще, чтобы общаться с MySQL, вам нужен 32-битный драйвер в Rails\bin. Драйвер называется libmysql.dll. Даже если у вас 64-битный сервер, вам нужен 32-битный драйвер.

64-битный драйвер завершится ошибкой ruby/gems/1.8/gems/do_mysql-0.10.2-x86-mingw32/lib/do_mysql/1.8/do_mysql.so: 193: %1 не является допустимым приложением Win32.

Неправильная 32-битная версия вылетит из-за ошибки выделения памяти или чего-то подобного (предлагаемое решение взять libmysql.dll из другого проекта может не работать с более новыми версиями MySQL).

person dB.    schedule 05.01.2011
comment
Подробное обсуждение и решение этой проблемы приведены на установка-mysql-на-windows-7-x64-и-использование-ruby-with-it - person Zeeshan; 06.08.2012

Я новичок в этих рельсах. Я только что прошел ту же проблему в Vista. после загрузки libmySQL.dll (в PATH) с помощью InstantRails он начинает работать.

[email protected]

person my_ls_kumar    schedule 03.01.2010

Решение этой проблемы — просто установить 32-битную версию mysql.

person octane097    schedule 09.03.2011
comment
Это не обязательно должна быть 32-битная версия mysql. Вам просто нужен 32-битный коннектор mysql. Эта проблема подробно обсуждалась по этой ссылке blog.mmediasys.com/2011/07/07/ . - person Zeeshan; 06.08.2012

Перенесемся в март 2012 года. Я решил эту проблему в Windows 7 x64), переименовав файл Ruby\b\bin\libmysql.dll, а затем скопировав libmysql.dll из C:\Program Files (x86)\MySQL\MySQL Connector C 6.0. 2\lib\выберите Ruby\bin

Была более новая версия libmysql.dll в C:\Program Files (x86)\MySQL\MySQL Workbench CE 5.2.37, но драгоценному камню не понравилась версия не 6.x.

person sympatric greg    schedule 26.03.2012

Может ли это быть связано с Ruby on Rails Win7 x64?? Если да, то что было исправлено снова (не смог понять из первого ответа)?

person Dr1Ku    schedule 27.12.2009

Другой вариант, который сработал для меня, - загрузить 32-битную версию mysql для Windows, просто сохранить libmysql.dll и добавить расположение этой DLL в PATH Windows.

person Amit    schedule 02.07.2010

Добавление libmySQL.dll из InstantRails в каталог на моем пути тоже сработало для меня. Хотя очень грустно, что нам приходится делать такие вещи. Я хотел бы, чтобы гем или сам MySql правильно установили эту DLL.

person Eivind    schedule 07.12.2010

Я запускаю текущие версии всего на WinXP SP3: Ruby 1.9.2p0, MySQL 5.5, mysql 2.8.1. Эта проблема все еще присутствует, и для ее устранения мне пришлось скопировать Instant Rails libmysql.dll в мой каталог C:\Ruby192\bin. Сначала я скопировал файл libmysql.dll, поставляемый с MySQL 5.5, но это вызвало ошибку seq!

person Jason    schedule 17.12.2010