Closed runlevel5 closed 4 years ago
Hi @joneslee85 can you run this command in terminal, and the try rake migrate again?
cd /Users/Shared/DBngin/mysql/5.7.23/lib
install_name_tool -id /Users/Shared/DBngin/mysql/5.7.23/lib/libmysqlclient.20.dylib libmysqlclient.20.dylib
same problem here.
cd /Users/Shared/DBngin/mysql/5.7.23/lib
install_name_tool -id /Users/Shared/DBngin/mysql/5.7.23/lib/libmysqlclient.20.dylib libmysqlclient.20.dylib
run this command does not help.
@huyphams it does not really help unfortunately
If anyone is still having this problem - I needed both a recent MariaDB and a 5.x MySQL server running in parallel on my Mac and ran into the same problem described above when I tried to use DBIng for the multi-server setup.
I solved it by installing mysql 5.7 via brew AS WELL as via DBIng. The DBIng option is great for running the server as it works out of the box without any hassles - it also recognised my existing MariaDB install straight away.
To configure the mysql2 gem for the 5.7 server I did:
brew install mysql@5.7
gem install mysql2 -v '0.3.18' -- --with-mysql-config=$MYSQL5/bin/mysql_config
(the MYSQL5 environment variable is set by the brew install, in my case it was /usr/local/Cellar/mysql@5.7/5.7.29)
My last problem was then that the mysql2 gem was linked to the wrong mysql client library - when running the rails server I got
Gem Load Error is: Incorrect MySQL client library version! This gem was compiled for 5.7.29 but the client library is 10.4.12.
To fix that, locate the mysql2.bundle
file that was created when the mysql2 gem was installed - I am using RVM, so in my case it was here:
cd /Users/patsch/.rvm/gems/ruby-2.3.8@awsa/gems/mysql2-0.3.18/lib/mysql2
I then checked the libraries it was linked against:
otool -L mysql2.bundle
This then showed that the mysql2.bundle
had been told to use the mariadb runtime, instead of the mysql5 runtime:
mysql2.bundle:
/usr/local/opt/mariadb/lib/libmariadb.3.dylib (compatibility version 3.0.0, current version 3.0.0)
To change that, I then ran
install_name_tool -change /usr/local/opt/mariadb/lib/libmariadb.3.dylib /usr/local/Cellar/mysql@5.7/5.7.29/lib/libmysqlclient.20.dylib mysql2.bundle
and now Rails is happy :-)
It's been awhile. I've working around the issue by installing the MySQL DB separately so that its headers can be looked up and used by clients such as mysql2 rubygems.
This is how I worked around this issue. It might not be the best solution but it suits my needs. The following code is from freshly created rails app.
Added mysql database to the path in .zshrc since it couldn't find the database even after I clicked on exporting the environment variables to terminal.
export PATH="$HOME/.yarn/bin:$HOME/.rvm/bin:/Users/Shared/DBngin/mysql/8.0.19/bin:$PATH"
I am using rvm and I created a gemset for my project.
rvm use ruby-2.7.0@railsapp --ruby-version --create
Then created a local bundle file to set mysql2 with the new mysql_config installed by dbngin
cd railsapp
then
bundle config --local build.mysql2 --with-mysql-config=/Users/Shared/DBngin/mysql/8.0.19/bin/mysql_config
this will create app/.bundle/config
file and it is ignored in .gitignore file.
I added the socket option to database.yml file to specify dbngin's socket
default: &default
adapter: mysql2
socket: "/tmp/mysql_3306.sock"
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: 'root' // I changed the password of root through ALTER USER using tableplus
host: localhost
I ran bundle install
. After bundler finished installing the gems, I ran bin/rails db:create
and I got my database created successfully.
Please fill out the detail below, it helps me investigate the bug:
Driver: MySQL 5.7.23
DBngin build number: 1.0 (14)
macOS version: macOS 10.14
The steps to reproduce this issue:
Installing MySQL2 Ruby client:
gem install mysql2 --version=0.4.10 -- --with-mysql-dir=/Users/Shared/DBngin/mysql/5.7.23
Attempt to run a rails migration with the driver yield: