Cannot run migrations due to MySQL error

倾然丶 夕夏残阳落幕 提交于 2020-01-02 12:16:45

问题


I have been trying to get my dev environment setup on OS X for a couple of days now, and I have had a lot of trouble with mysql. I have installed mysql via the dmg file available from the mysql website. This fixed most of the trouble I was having.

My current problem is that, when I run "rake db:migrate" I get the following error:

rake aborted!
undefined method `init' for Mysql:Class

I read somewhere that using gem 'mysql2' in the Gemfile and mysql2 as the database adapter might fix the problem. I tried doing this, but it did not work. One thing to note is that mysql is not anywhere in my PATH variable, so typing 'mysql' in the terminal takes me to /var/_mysql which is kind of weird.

Do I need to add '/usr/local/mysql/bin' to my path variable? If so, how do I do this in OS X?

Thanks.

EDIT: I added /usr/local/mysql/bin to my path, still have the same error.


回答1:


To fix the problem I ended up using the mysql2 gem instead of the mysql gem. This process was not straight forward at all, so I wanted to post the exact steps I took in case someone needs help later.

First, download the OS X DMG file that corresponds to your version of OS X from the mysql website. You will need to install mysql, then the startup item, and finally the preferences panel (All 3 of these were in the DMG file).

Next, you need to add mysql to your path variable. I believe you can edit /etc/paths or add a new file to /etc/paths.rd/, but I ended up modifying my terminal's configuration file. I added the following line to ~/.zshrc (This is only for zsh, if you use bash the file is something like ~/.bashrc):

export PATH=[path:variables]:/usr/local/mysql/bin
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/"

[path:variables] is just a place holder for all of the other path variables that were there. The second line is something that was required to get the mysql2 gem working. The second line allows mysql to find a required library file.

Next, replace or add

gem 'mysql' 

with

gem 'mysql2', '< 0.3'

The < 0.3 was required, otherwise some weird errors were thrown. (Sorry, I didn't save the stack trace). The final step is to change your database adapters to mysql2. I hope this can help someone save a great deal of headache :)




回答2:


I suggest you uninstall MySQL completely and the MySQL gem(s). Then install Homebrew package manager and use Homebrew to install MySQL. After that install the gems. Homebrew will make your life much easier in a number of instances. Particularly helpful if you are not too confident with the installations of C libraries.



来源:https://stackoverflow.com/questions/7179206/cannot-run-migrations-due-to-mysql-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!