16

Rubymysqlgemドライバーをインストールしようとすると問題が発生します。

最近SnowLeopardにアップグレードし MySQLのHivelogic手動インストールを行いました。コマンドラインからmysqlにアクセスしてデータベースに変更を加えることができるため、これはすべて正常に機能しているようです。

私の問題は、私が今使用する場合

rake db:migrate 

私は得る:

rake aborted!
uninitialized constant MysqlCompat::MysqlRes

(See full trace by running task with --trace)

Pythonドライバー(コンパイル先)を使用してPythonからMySQLに正常にアクセスできるため、mysqlgemが正しく機能していないようです。したがって、私はこのサイトから次のコマンドを使用してgemを再構築しようとしました:http://techliberty.blogspot.com/、(ちなみに私は最近のIntel MacBook Proを使用しています):

  sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

ドキュメントの定義はありませんが、これはコンパイルされます。

  Building native extensions.  This could take a while...
  Successfully installed mysql-2.8.1
  1 gem installed
  Installing ri documentation for mysql-2.8.1...

  No definition for next_result

  No definition for field_name
  ...

私のmysql_configが正しい場所にあるので、私は少し困惑しています:

 /usr/local/mysql/bin/mysql_config

そして、mysqlgemの他のすべてのインスタンスをシステムから削除しました。

任意の提案をいただければ幸いです。どうもありがとう。

PSこの前の投稿の初期化されていない定数MysqlCompat::MysqlRes(mms2r gemを使用)を見ましたが、私のバージョンには適用できないようです。

4

17 に答える 17

18

基本的に問題は、ダイナミックライブラリlibmysqlclientが見つからないことです。上記のソリューションは機能しますが、gemを再構築するとき、または新しいバージョンのMySQLをインストールするときはいつでも、それらを再適用する必要があります。

別のアプローチは、ライブラリを含むMySQLディレクトリを動的ロードパスに追加することです。私の.bashrcファイルに以下を入れると問題が解決しました:

export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
于 2011-03-17T19:40:49.040 に答える
10

OK、私はついにこの問題を解決しました。

これが発生した理由は、2つのバージョンのRubyがインストールされていたためです。

  1. Snow Leopardをインストールする前に、HiveLogicガイドラインに従って独自のバージョンのRubyをコンパイルしてインストールしました。
  2. 次に、Snow Leopard(Rubyの独自のバージョンがあります)にアップグレードしました。

これらの2つのバージョンは競合しており、MySQL gemを正しいARCHFLAGSでインストールしようとすると、システムは別のバージョンのRubyを使用していると思っていました。

修正は非常に簡単でした。

  1. RubyのHiveLogicバージョンを削除します(https://content.pivotal.io/blog/removing-old-ruby-source-installation-after-a-leopard-upgrade
  2. 正しいARCHFLAGSを使用してMySQLgemを再コンパイルします。

    sudo env ARCHFLAGS = "-arch x86_64" gem install --no-rdoc --no-ri mysql-- --with-mysql-config = / usr / local / mysql / bin / mysql_config

これを実行すると、すべてが正常に機能しました。

于 2010-02-14T16:24:15.790 に答える
10

この問題に数日間取り組んだ後、私はついにそれを釘付けにしました。それを機能させるために私が行った2つのこと:

  1. sudo env ARCHFLAGS = "-arch x86_64" gem install --no-rdoc --no-ri mysql-- --with-mysql-config = / usr / local / mysql / bin / mysql_config
  2. export DYLD_LIBRARY_PATH = "/ usr / local / mysql / lib:$ DYLD_LIBRARY_PATH"

#2がStevenChaninによってのみ言及されたことに少し驚いています。

私はSnowLeopardを使用しており、MySQL(x86_64)5.5が1つと、ruby(Snow Leopardがあらかじめパッケージ化されている)が1つだけインストールされています。

于 2011-04-17T14:44:23.960 に答える
6

さて、私は初心者です。しばらく苦労した後、上記のどれもうまくいかなかったので、問題は私の「mysql」が64ビットのインストールであり、rubyが32ビットであることが原因であると考えました。これらのコマンドで確認してください

file `which mysql`
file `which ruby`

どちらも、Mach-O64ビット実行可能ファイルx86_64またはMach-O64ビット実行可能ファイルi386と一致する必要があります。私は32ビットのmysqlをインストールし、ソースとレールからrubyを再インストールしましたが、それ以来、問題なく動作しています。私はLeopardにいます。

于 2010-04-20T07:42:01.727 に答える
2

hivelogic postの手順を適用しましたが、MySQLのバージョン5.1.41を使用しています。そして、宝石のインストールのために、私は2つのことをしました:

sudo gem uninstall mysql
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

そして、物事は私にとってうまくいきました。

于 2009-12-22T14:23:30.273 に答える
2

ここでも同じ問題があります。これをオフにしてから2週間以上オンに取り組んできました!

私はRORの専門家ではありませんが、解決策を見つけた他の知識豊富な人々からすると、問題はmysql用のRubyGemを指しているようです。

今後もRubyForgeサイトで調査を続け、RubyGemの達人がこの恐ろしいバグを修正できるかどうかを確認します。Railsが機能する必要があります。時は金なり!

そこで、RubyForgeMysql開発者のバグ追跡ページでこのバグを報告しました。

これが私の現在のプロジェクトを台無しにしているので、彼らが助けてくれることを願っています。

そして、他の誰かが私のバグレポートをサポートしてくれるなら、おそらくもっと注目されるでしょう。チャイムしてください!

于 2010-01-19T05:34:55.643 に答える
1

上記の手順に従ったが、Mysqlを再インストールする前にサーバーを強制終了するのを忘れた可能性があります。これにより、エラーメッセージが消えることはありません。これは私に起こりました。

ここでさまざまなオプションをすべて試した後、次のことを試しました。

ps aux | grep'mysql'

[pid_number_for_mysql]を強制終了します

基本的に、サーバーを殺します..難しい方法です。次に、サーバーを再起動します。

于 2011-07-29T05:57:56.073 に答える
1

MySQL 5.5を使用している場合、これらは私たちのためにそれを機能させたステップです:

mysql-2.8.1をインストールするコマンド:

sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri  mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

mysql-2.8.1をmysql5.5で動作させるコマンド:

sudo ln -s ../mysql/lib/libmysqlclient.16.dylib libmysqlclient.16.dylib

お役に立てば幸いです。

于 2011-01-18T23:25:28.223 に答える
1

問題に頭を悩ませた後、私も問題がインストールされている同じmysqlgemバージョンの複数のバイナリに関係していることに気付きました。以下は私のためにそれを修正しました。

gem uninstall mysql
Select gem to uninstall:
 1. mysql-2.8.1
 2. mysql-2.8.1
 3. All versions
> 3

Successfully uninstalled mysql-2.8.1
Successfully uninstalled mysql-2.8.1

次に、SnowLeopardマシンのソースからmysqlgemを再コンパイルしましたが、すべてが世界で盛り上がりました。

sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql-5.1.46-osx10.6-x86_64/bin/mysql_config
于 2010-05-04T15:07:00.490 に答える
1

これはMysqlバージョンの問題である可能性があります。最も安定したバージョン(MYSQL 5.1)をインストールする必要があります。私のブログ投稿を参照してください:http://geryit.com/blog/2011/01/installing-mysql-with-rails-on-mac-os-x-snow-leopard/

于 2011-01-18T01:27:39.443 に答える
0

誰かがruby1.8.7とmysqlx86(32ビットバージョン)でrvmを使用していて、この問題が発生した場合。このリンクは役に立ちます:http://rvm.beginrescueend.com/integration/databases/。mysqlをx86_64バージョンでインストールしてから、archflagsをx86_64に設定してmysqlgemをインストールする必要があります。その理由は、mysqlx86と一致するようにgemをx86としてインストールしようとしてもです。ただし、ルビーバージョンは64ビットです。したがって、Ruby、mysql、およびmysqlgemの3つすべてが一致している必要があります。したがって、より簡単な方法は、それらすべてを64ビットにすることです。

于 2010-11-18T20:07:53.403 に答える
0

私も同じ問題を抱えていました。mysql(私の場合はSnowLeopardの場合は5.1.4864ビット)を/ usr / local/mysqlではなく/usr/ local / mysql /current/にインストールしました。ただし、mysqlクライアントシャードライブラリ(libmysqlclient.16.dylib)には、/ usr / local / mysql / lib/libmysqlclient.16.dylibのパスが埋め込まれていました。

install_name_toolを使用してこれを修正しようと何度か失敗した後、次のように共有ライブラリのパスを変更し、次にmysql2.8.1rubygemを再構築して次の両方を指定しました。

# change the path embedded in libmysqlclient.dylib
sudo install_name_tool -change /usr/local/mysql/lib/libmysqlclient.16.dylib  /usr/local/mysql/current/lib/libmysqlclient.16.dylib /usr/local/mysql/current/lib/libmysqlclient.16.dylib

# reinstall the mysql gem
sudo ARCHFLAGS="-arch i386 -arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-dir=/usr/local/mysql/current --with-mysql-config=/usr/local/mysql/current/bin/mysql_config

これは、mysqlが/ usr / local / mysql / currentにインストールされていることに基づいていることに注意してください。システムに適切になるように、パスを編集する必要があります。

于 2011-04-19T18:19:42.420 に答える
0

私は最終日のためにこれを解決するためにかなり一生懸命働きました、そして私はついにそれを理解しました。私はユキヒョウを実行していて、新しいレールとmysqlのインストールを行いました。これを機能させる唯一の方法は、dmg(macportsではない)から64ビットバージョンのmysqlをインストールし、起動中に「6」キーと「4」キーを押したままにしてマシンを64ビットモードで再起動することでした。次に、gemをインストールし、DBホストをローカルに設定すると、チャンピオンのように機能しました。

于 2010-03-02T00:17:35.027 に答える
0

いくつかの問題は、ルビーと宝石の廃止された、または複数の競合するバイナリに関連していました。私は、ruby 1.9でコードを実行しようとしているときに、システムrubyを使用してmysqlgemを「透過的に」コンパイルするという問題を抱えていました。このスレッドのおかげで問題を理解した後、すべてがスムーズに進みました。

これらの問題を回避し、記録のために、RVMツールキットは非常に便利な場合があります:http://rvm.beginrescueend.com。複数のルビーバージョンを適切に管理するのに役立ち、バージョンごとにコピーを保持することなく、すべてのバージョンの宝石を巧みに管理します。

RVMを使用すると、このスレッドのいくつかの問題を回避できるようです。

于 2010-05-20T16:06:22.513 に答える
0

私にとって非常に迅速な修正。

この問題は、今週、私がしばらく使用していなかった開発マシンで再び発生しました。emsonの初期応答のステップ2に従って、MySQLgemを正しいARCHFLAGSで再コンパイルするだけで済みました。

sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
于 2010-11-29T06:25:27.937 に答える
0

私はこれ、または少なくとも同様の問題を抱えていました(Hivelogicは関与せず、アップグレードではなく、新しいシステムでした)。おそらく64ビットの問題であることに同意します。私はあなたのためのリンクを持っています、それは私がした他のすべての頭とお尻の引っかき傷の後、最終的に私のお尻(そして脳)を救いました。

[http://forums.mysql.com/read.php?116,359591,359591]

幸運にも、この構成BSを通過して、いくつかのコーディングに取り掛かることができます。

于 2010-11-30T05:57:08.213 に答える
0

この特定の問題を解決するために長い間検索し、運がなくて上記のすべてのオプション(および他の多くのサイトのオプション)を試した後、mysql-5.5インストールを削除してmysql-5.1をインストールしました。突然、64ビットバージョンをコンパイルするための上記の助けを少し借りて、私はついに動作するmysqlgemをインストールすることができました。

したがって、この問題が発生し、mysql 5.5を実行している場合は、mysql5.1にデグレードしてみてください。

于 2010-12-21T13:05:47.950 に答える