Rails私のアプリを新しいサーバーに移動し、いくつかのgem依存関係をインストールする必要がありました。ただし、mysql gemをインストールした後、初期化されていない定数MysqlCompat :: MysqlResというエラーが発生します。 mysqlデータベースを含むrakeコマンドを実行します。mms2rgemが必要な場合にのみこのエラーが発生するようです。これを聞いたことがある人はいますか?mysql 2.8.1gemを実行しています。
私のMacOS X 10.6では、これを行って2.8.1 gemをインストールしました。これは、MacPortsmysql5-serverで完全に機能しました。
Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql
基本的に問題は、ダイナミックライブラリlibmysqlclientが見つからないことです。上記のソリューションは機能しますが、gemを再構築するとき、または新しいバージョンのMySQLをインストールするときはいつでも、それらを再適用する必要があります。
別のアプローチは、ライブラリを含むMySQLディレクトリを動的ロードパスに追加することです。私の.bashrcファイルに以下を入れると問題が解決しました:
export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
私の問題は、Rubyは64ビットと32ビットでしたが、「mysql」が32ビットインストールであったためです。これらのコマンドで確認してください
file `which mysql`
file `which Ruby`
どちらも、Mach-O64ビット実行可能ファイルx86_64またはMach-O64ビット実行可能ファイルi386と一致する必要があります。 64ビットのmysqlをインストールしてから
export ARCHFLAGS="-Arch x86_64" ; Sudo gem install --no-rdoc --no-ri mysql -v 2.7 -- --with-mysql-dir=/usr/local --with-mysql-config=/usr/local/mysql/bin/mysql_config
そして出来上がり!
Mysql 5.5をお持ちの場合は、次の手順に従ってください: http://geryit.com/blog/2011/01/installing-mysql-with-Rails-on-mac-os-x-snow-leopard/
FTR:賛成するのに愚かな担当者が必要なかったとしたら、同じ答えに賛成したでしょう。これを私の賛成と考えてください。
はい、同じ存在しないクラスMysqlCompat :: MysqlResを探して、同様のエラーメッセージが表示されました。
結局のところ、そのクラスは存在すべきではありません。エラーメッセージは、最新のMysqlドライバーの問題が原因で発生します。 mysql-2.8.1は、最後に「mysql」の追加レベルが付いた名前のディレクトリでライブラリを探しました。たとえば、私のライブラリ(MacOS X 10.5.8では)は/ usr/local/mysql/libにありますが、mysql.bundleライブラリは/ usr/local/mysql/lib/mysqlでMySQLライブラリを検索します...これは間違っています。
/ usr/local/mysql/libに「mysql」という名前の「。」を指すシンボリックリンクを作成することで、簡単に修正できることがわかりました。
したがって、ライブラリがその余分な深さで参照されると、それらは検出され、機能します。これは間違いなくハックです。これを修正するためのより適切な方法があると確信しています。私はそれが機能するために必要なだけなので、他のことを続けることができます。
さらに、これはあなたのために働かないかもしれません。エラーが次のようになっている場合は、機能する可能性があります。
./mysql.bundle: dlopen(./mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/mysql/libmysqlclient.15.dylib (LoadError)
Referenced from: /Users/ccullen/Projects/npapp-v2/mysql-Ruby-2.8.1/mysql.bundle
Reason: image not found - ./mysql.bundle
from test.rb:5
これは最近の開発のようで、直接の反応は見られなかったので、どのように修正したかを共有したいと思いました。幸運を :)
Gem(再)インストール時に適切なARCHFLAGSを設定すると、シンボリックリンクを必要とせずに役立ちました。
http://joergbattermann.tumblr.com/post/181479575/fixing-the-nameerror-uninitialized-constant
gem install -v = 2.7.1でも修正されます。
この問題は、Ubuntuを9.10から10.04にアップグレードした後に発生しました。
Mysqlgemに問題があるようです。
症状:mysqlへの接続を必要とするActiveRecordを使用すると、「初期化されていない定数MysqlCompat :: MysqlRes」からのスタックトレースが生成されます。
「gemupdatemysql」を試しましたが、コンパイラがmysql_clientライブラリを見つけられないため、ネイティブ拡張を構築できないことがわかりました。そのライブラリ(libmysqlclient.so.16)は/ usr/libにあります。
buntu 10.04の修正:
ルートとして、私はこれらを行いました:
apt-get install libmysqlclient-dev
gem install mysql
何人かの人々がここで物事を試みていることに気づき、根本的な原因を突き止めていないのではないかと思います。
人々が答えで明確にする必要がある変数:
Mysql gem(2.8.1)で私は得ていました
初期化されていない定数MysqlCompat :: MysqlRes
-v 2.7を使用すると、完全に機能し、Homebrewを使用してmysqlをインストールした人にとっても
Sudo gem install mysql -v 2.7 --- with-mysql-config =/usr/local/Cellar/mysql/5.1.48/bin/mysql_config
必要に応じてmysqlのバージョンを変更できることに注意してください。
ここで他のすべてを試しましたが、それでも問題が発生しました。 MySQL 5.5から5.1にダウングレードすると、修正されました。 (Mac OS X 10.6.5)
Sudo apt-get install libmysqlclient15-dev
Sudo gem install mysql -v2.7でうまくいくはずです...
(5.9から)mysql 5.1へのダウングレードは、10.6で役立ちました... mysqlとmysql2gemの両方を実行しています。
Sudo gem install mysql -v 2.7 --- with-mysql-config =/usr/local/mysql/bin/mysql_configも、新しいSnowLeopardラップトップに移行するときにトリックを実行しました。私はmysqlをインストールするためにMacPortsを使用せず、むしろバイナリを使用し、Archフラグソリューションまたはシンボリックリンクを使用できませんでした。
gem uninstall mysql
gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
ldconfig /usr/local/mysql/lib/mysql
Rails_ENV=production rake db:migrate --trace
これは私のために働いた。
Mysqlとmysql2gemはどちらもRuby 1.9.2で動作し、Rubyを更新して、必要なgemをインストールするだけです。
Fedora10からFedora12にアップグレードした後、同じ問題が発生しました。mysqlgemをアンインストールして再度インストールするだけで、問題を修正しました。そのため、MySQLの新しいバージョンに準拠しています。
これは私のために働いたものです。たくさんの投稿を読んだところ、システムRuby installを使用すると、非互換性の問題が発生することがわかりました。
Sudo env ARCHFLAGS = "-Arch x86_64" gem install mysql --- with-mysql-config =/usr/local/mysql/bin/mysql_config
Sudo gem install mysql -v 2.7 --- with-mysql-config =/usr/local/mysql/bin/mysql_config
私のために完璧に働いた:)
Sudo gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
archフラグとシンボリックリンクが機能しなかったときにも機能しました!ありがとう!
Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql
MysqlサイトからのDmgパッケージは完了です!
Mysqlの依存関係はmms2rとどのように関連していますか?ところで、私はmms2rの作者です。
Mms2r gemspec https://github.com/monde/mms2r/blob/master/mms2r.gemspec はmysqlの依存関係をリストしていません。
私は上記のすべてを試しましたが、どれも私にはうまくいきません。 mysqlバージョン2.7をインストールしようとすると、次のエラーが発生します。
Sudo gem install -v=2.7.1 mysql -- --with-mysql-dir=/usr/local/mysql-5.1.39-osx10.5-powerpc/bin/mysql_config
ERROR: could not find gem mysql locally or in a repository
F107PHD:stepgreen.org tdillahu$ Sudo gem install -v=2.7 mysql -- --with-mysql-dir=/usr/local/mysql-5.1.39-osx10.5-powerpc/bin/mysql_config
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/Ruby extconf.rb --with-mysql-dir=/usr/local/mysql-5.1.39-osx10.5-powerpc/bin/mysql_config
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--Ruby=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/Ruby
--with-mysql-config
--without-mysql-config
--with-mysql-dir
--with-mysql-include
--without-mysql-include=${mysql-dir}/include
--with-mysql-lib
--without-mysql-lib=${mysql-dir}/lib
--with-mysqlclientlib
--without-mysqlclientlib
--with-mlib
--without-mlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-zlib
--without-zlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-socketlib
--without-socketlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-nsllib
--without-nsllib
--with-mysqlclientlib
--without-mysqlclientlib
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/mysql-2.7/gem_make.out
私の元のエラー:akeは中止されました!初期化されていない定数MysqlCompat :: MysqlRes /vendor/Rails/activesupport/lib/active_support/dependencies.rb:440:in load_missing_constant' /vendor/Rails/activesupport/lib/active_support/dependencies.rb:80:in
const_missing '
Mysqlのバージョンが5.5の場合は、アンインストールする必要があります。 Ruby: http://geryit.com/blog/2011/01/installing-mysql-with-Rails-on-mac-)でmysqlを使用することについての記事を残しましたos-x-snow-leopard /
Mac OS X 10.6.4では、アーキテクチャと構成ディレクトリを指定する必要がありました。
Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config