Dopiero zaczynam od Rubiego (i railsów). Zrobiłem konfigurację zgodnie z http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby gems, używając rvm
. Mam wszystko, co działa dobrze z sqlite.
Teraz chciałbym spróbować przekonwertować rzeczy do MySQL, ponieważ to jest to, z czym robię większość mojego rozwoju. W moim Gemfile zamieniłem sqlite na mysql2:
group :development, :test do
# gem 'sqlite3', '1.3.5'
gem 'mysql2'
gem 'rspec-rails', '2.9.0'
end
Ale kiedy próbuję utworzyć DB dla szyn w MySQL, otrzymuję:
$ rake db:create --trace
rake aborted!
dlopen(/Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
Referenced from: /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
Reason: image not found - /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
Widziałem inne posty zalecające ponowną instalację MySQL przez homebrew (mój został zainstalowany przez DMG do pobrania), ale wolałbym tego nie robić, ponieważ mam tam już kilka innych baz danych dla innych projektów innych niż Ruby.
W rzeczywistości mam plik, którego szuka Rails; jest zainstalowany w /usr/local/mysql/lib/libmysqlclient.18.dylib
. Jaki jest najlepszy sposób, aby poinformować Railsy, jak to zlokalizować?
źródło
Odpowiedzi:
Rozwiązanie jest całkiem proste; Dodaj ścieżkę do biblioteki w swoim pliku ~ / .bash_profile lub ~ / .profile:
Jeśli nadal nie działa (to działa dla mnie):
Jest wiele blogów, z
install_name_tool
którymi nie mogę skorzystać, ponieważ korzystam z OSX Lion:źródło
.bash_profile
tak naprawdę nie ma zastosowania.usr/lib
już utworzyć linku symbolicznego, aleusr/local/lib
będzie działał link symboliczny do :sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
W El Capitan dostałem
ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted
W El Capitan
/usr/lib/
ma teraz ograniczoną flagę i nie można do niej pisać bez wyłączania zabezpieczeń, więc/usr/local/lib
zamiast tego wstawiam łącze .Serwer Rails znów działa poprawnie.
źródło
O ile tytuł tego pytania dokładnie opisuje napotkany przeze mnie problem, okoliczności różnią się od tych opisanych w poprzednich odpowiedziach, tak samo jak rozwiązanie.
W moim przypadku (El Capitan, mysql zainstalowany przez homebrew) a
brew update && brew upgrade
spowodował aktualizację pakietu mysql do wersji 5.7.10 (z 5.6.x).Uaktualnienie
libmysqlclient.18.dylib
zostało zastąpione przezlibmysqlclient.20.dylib
, alemysql2
klejnot nadal polegał na tym pierwszym.Aby rozwiązać problem, który zrobiłem:
gem uninstall mysql2 && gem install mysql2
Zwróć uwagę, że podobne problemy mogą wystąpić w przypadku różnych bibliotek zarządzanych przez homebrew ( zobacz na przykład moją własną odpowiedź )
źródło
pip uninstall mysqlclient
apip install mysqlclient
także działali.To zadziałało dla mnie. Zainstalowałem MySQL z pliku dmg.
źródło
Pracował dla mnie. Wszystkie podobne nie.
źródło
Napotkałem ten problem po całkowitym usunięciu, a następnie nowej instalacji MySQL. Konkretnie:
Nawet nie dotknąłem aplikacji Rails.
Ponowna instalacja
mysql2
klejnotu rozwiązała ten problem.[MySQL 5.7.10, Rails 4.0.0, Ruby 2.0.0, Mac OS X Yosemite 10.10]
źródło
Jeśli używasz MySQL zainstalowanego z HomeBrew w El Capitan, powinieneś połączyć go w następujący sposób:
źródło
Dla MySql 5.6 zainstalowanego z DMG na Mavericks
źródło
Potwierdzam, łata od Abhishek wykonuje pracę.
działa również dla Yosemite.
uwaga: zamiast linkować do konkretnej wersji mysql, użyj faktu, że mysql już zbudował link symboliczny:
to rozwiązanie działa dla Xcode i C API.
źródło
Dla tych, którzy używają naparu. Po prostu połącz swoją wersję mysql z opcją "--force".
źródło
brew link [email protected] --force
. Działał doskonale.Aby upewnić się, jaki link symboliczny jest potrzebny (zależy od wersji mysql i wersji systemu operacyjnego):
a więc :
źródło
To działa dla mnie:
źródło
ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Używam Rails REE (2.3.4) dla starszego systemu, który mamy. Po uaktualnieniu do El Capitan, uruchomienie skryptu / konsoli spowodowało błąd i moja aplikacja nie mogła się już uruchomić (przy użyciu pow):
Na podstawie powyższego wątku ustaliłem, że muszę wydać to polecenie w terminalu:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
To polecenie spowodowało błąd: „ln: /usr/lib/libmysqlclient.18.dylib: Operacja niedozwolona”. Nigdy wcześniej nie widziałem tego błędu.
Po długich poszukiwaniach znalazłem ten artykuł: http://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html i śledziłem instrukcje wyłączania SIP (nowa ochrona integralności systemu El Capitan). Po wyłączeniu SIP i ponownym uruchomieniu polecenie ln działało dobrze. Potem wyłączyłem SIP. Teraz wszystko jest w porządku. Moja aplikacja działa ponownie przy użyciu pow i nie ma błędu podczas uruchamiania skryptu / konsoli. Mam nadzieję, że to Ci pomoże.
źródło
Na Mac Sierra, jeśli używasz Homebrew, wykonaj:
źródło
i
pracował dla mnie.
źródło
To zadziałało dla mnie. Wszystko, co musiałem zrobić, to odinstalować mysql2 gem i zainstalować go ponownie za pomocą poniższych poleceń
źródło
Używam systemu Mac OS i utknąłem z tym błędem nawet po odinstalowaniu / usunięciu wszystkich mysql i MAMP. Wcześniej zainstalowałem
brew install mysql
i też korzystałemMAMP
. addling softlink nie działał dla mnie.Zostało to rozwiązane tylko przez usunięcie wszystkich istniejących mysql. a następnie zainstaluj mysql przez MySQL stąd .
źródło
użyj tego z linii poleceń:
wypróbowany na kilku komputerach z Maverick zawsze działa
źródło
Jeśli używasz Bitnami RubyStack i napotkałeś podobny problem. Spróbuj tego
źródło
Mój problem z ładowaniem tego pliku pakietu był złym dowiązaniem symbolicznym. Sprawdź więc link i w razie potrzeby wymień go na nowy. W tym momencie wszystko się ułożyło. Nie wiem, jak to się stało, ale tak się stało. Pierwszy raz zdarzył się taki błąd składni.
źródło
Pracowałem z poleceniem rails g model i otrzymałem ten błąd:
Próbowałem tego i to zadziałało. Używałem Mavericks 10.9.5
Dzięki!
Teraz używam Yosemite 10.10.5 i mam ten sam błąd, więc właśnie uruchomiłem to polecenie na terminalu i zostało pomyślnie naprawione.
możesz też spróbować:
Oba działają dobrze dla mnie. Mam nadzieję, że może się przydać!
źródło
Wystąpił problem „Biblioteka nie została załadowana: libmysqlclient.18.dylib” podczas importowania MySQLdb z MySQL Dla python3 :
Rozwiązanie działa u mnie: Mac OS X 10.11.1 Python3.5
źródło
Jedyne, co mi pomogło, to:
Zamień ścieżki mysql i gemów tak, aby pasowały do Twojego systemu.
źródło
Po wielu googlach i próbach wszystkiego powyżej ... jedyną rzeczą, która rozwiązała mój problem, było to polecenie:
Używam Macbooka Pro, OSX 10 El Capitan. Darwin xxxx-MacBook-Pro.local 15.6.0 Wersja jądra Darwina 15.6.0: czw. 23 czerwca 18:25:34 PDT 2016; XXX: xnu-3248.60.10 ~ 1 / RELEASE_X86_64 x86_64 Perl: v5.18.2 MySQL: 5.6.19
źródło
Dzięki. Aktualizacja Homebrew sprawiła, że moje aplikacje Rails miały problemy na moim Macu. Ponownie zainstalowałem MySQL (5.7) ze źródła, potem musiałem to zrobić
na podstawie tego, co przeczytałem powyżej oraz w moim pliku Gemfile
oraz w database.yml
źródło
Odpowiedzi na to pytanie jest już wiele, zwłaszcza ta https://stackoverflow.com/a/10847618/5515861 . Chcę tylko dodać kilka uwag. Jeśli używasz Maca, nie wiem, jak instalujesz MySQL, ale pierwszą rzeczą do zbadania jest to, gdzie znajduje się twoja instalacja MySQL. U mnie MySQL jest instalowany przy użyciu
brew
wersji5.7
, a lokalizacja to/usr/local/opt/[email protected]/
, więc dodaj następujący plik do my~/.zshrc
.Mam nadzieję, że rozwiążesz swoje problemy 😁
źródło