2009-08-26 72 views
22

将我的Rails应用程序移动到新服务器上,并且必须安装一些gem依赖项。但是,在安装mysql gem后,每当我尝试运行涉及mysql数据库的rake命令时,都会收到错误,未初始化的常量MysqlCompat :: MysqlRes。看来我只有在需要mms2r宝石时才会出现这个错误。有没有人听说过这个?我正在运行mysql 2.8.1 gem。未初始化的常量MysqlCompat :: MysqlRes(使用mms2r宝石)

+0

此问题也会影响其他宝石 - 幸运的是,以下Markus的修复适用于所有 – mikeh 2010-12-21 22:49:55

回答

47

在我的Mac OS X 10.6我这样做是为了安装2.8.1宝石,这与我的MacPorts的完美工作MYSQL5服务器:

sudo env ARCHFLAGS="-arch x86_64" gem install mysql 
+1

完美适合我。 – 2010-01-23 23:04:18

+4

使用rvm时,这条线在前面没有使用sudo。 – 2010-08-11 15:13:04

+0

@KyleHeironimus - “使用rvm时”是什么意思?我已经安装了rvm,但是当我不使用'sudo'运行命令时,我得到“您没有写入权限...”。为了使它与“rvm”一起工作,我有什么不同? (对不起,我对此很陌生。) – callum 2012-05-10 11:40:26

3

是的,我看到了一个类似的错误信息,寻找同样不存在的类MysqlCompat :: MysqlRes

事实证明,这个类不应该存在;该错误消息是由最新的Mysql驱动程序的问题引起的。 mysql-2.8.1在一个名为''''的目录下查找我的库,例如,我的库(在MacOS X 10.5.8下)位于/ usr/local/mysql/lib,但mysql.bundle库在/ usr/local/mysql/lib/mysql中查找MySQL库。这是错误的。

我发现很容易修复,通过在名为'mysql'的/ usr/local/mysql/lib中创建一个指向'。'的符号链接。

因此,当库在额外的深度被引用时,它们被找到并且工作。这绝对是一个黑客;我相信有更合适的方法来解决这个问题。我只是需要它的工作,所以我可以继续与其他事情。

此外,这可能不适合你。这是可能的工作,如果你的错误是这样的:

./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 

因为这似乎是一个新的发展,我还没有看到它的任何直接回应,我想我会分享我如何固定它。祝你好运:)

2

gem install -v = 2.7.1也会修复它。

+0

仅适用于Windows – davetron5000 2009-11-04 02:09:10

0

我已经尝试了所有上述的和他们没有为我工作,要么。当试图安装的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”

+0

为了解决这个问题,我必须使用(--with-mysql-config =而不是--with-mysql-dir):sudo gem install mysql - --with-mysql-config =/usr/local /的mysql-5.0.86-osx10.5-86 /斌/ mysql_config。 – 2009-10-11 13:15:30

+0

这很好,如果你的mysql安装在/ usr/local /下,但是如果你的mysql从包管理器安装了,你会在哪里找到mysql_config? – daf 2010-05-30 11:34:20

1

须藤宝石安装mysql -v 2.7 应该做的伎俩......

+0

对于OS X,这个(2.7)应该工作; 2.7.1不适用于OS X – davetron5000 2009-11-04 02:17:43

0

我有同样的问题在Fedora 10升级到Fedora 12后的我通过卸载mysql gem并重新安装它来修复它。所以它符合新版本的MySQL。

0

sudo的创业板安装MySQL -v 2.7 - --with-mysql的-配置=在/ usr /本地/ MySQL的/斌/ mysql_config

完全为我工作:)

1

sudo的创业板安装MySQL的 - v 2。7 - --with-mysql-config =/usr/local/mysql/bin/mysql_config在迁移到我的新雪豹笔记本电脑时也为我做了诀窍。我没有使用MacPorts来安装mysql,而是使用二进制文件,并且没有使用arch标志解决方案或符号链接。

0
sudo gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 

当arch标志和符号链接没有时,我也为我工作!谢谢!!

0
sudo env ARCHFLAGS="-arch x86_64" gem install mysql 

Dmg包从mysql网站上下载!

2

在将Ubuntu从9.10升级到10.04后,出现了此问题。

这似乎是与MySQL宝石的问题。

症状:任何ActiveRecord使用的,需要到MySQL的连接产生一个堆栈跟踪从“未初始化不断MysqlCompat :: MysqlRes”即将

我尝试了“宝石更新MySQL的”,我发现我不能建本地扩展,因为编译器找不到mysql_client库。该库(libmysqlclient.so.16)位于/ usr/lib中。

修复了Ubuntu的10.04:

以root身份,我做了这些:

apt-get install libmysqlclient-dev 
gem install mysql 

我注意到几个不同的人在这里尝试新事物,我不知道,如果我们不定位根原因。

变量,人们需要在他们的答案澄清:

  • 操作系统版本 - 这是什么您使用的版本?
  • where和你是怎么安装mysql的? - 这里的人似乎已经从/ usr/local下的源代码安装了他们的mysql(我通过ubuntu包装系统安装了我的)
  • 你是在64bit ubuntu或32bit?(我目前在32位。)
+0

我在Ubuntu 12.10上遇到同样的问题。你的解决方案并没有真正的帮助... – confiq 2012-11-04 10:13:37

2

与MySQL宝石(2.8.1)我正在

uninitialized constant MysqlCompat::MysqlRes

使用-v 2.7使得它完美的工作,并为那些谁使用自制软件来安装mysql

sudo gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/Cellar/mysql/5.1.48/bin/mysql_config

请注意,如果需要,您可以更改mysql版本。

0

在Mac OS X 10.6.4,我必须指定架构和配置目录:

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

10

我的问题是由于我的“MySQL的”是一个32位的安装,同时红宝石为64和32位。请使用这些命令

file `which mysql` 
file `which ruby` 

双方应匹配的Mach-O的64位可执行文件x86_64的或Mach-O的64位可执行文件的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 

和瞧!

+0

这对我来说是至关重要的。 MySQL,Ruby和mysql/ruby​​ gem都必须是64位。 – 2010-11-15 21:02:24

1
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 

这对我有效。

+0

找不到ldconfig命令,这是为mac吗?对于Ubuntu?对于Windows?烤面包机? – 2016-02-28 03:04:25

1
sudo apt-get install libmysqlclient15-dev 
1

我在这里尝试了一切,但仍然有问题。从MySQL 5.5降级到5.1为我解决了这个问题。 (Mac OS X 10.6.5)

0

这是我工作的。我读了大量的帖子,发现使用系统红宝石安装导致不兼容问题:

  1. 不使用默认的红宝石安装! 安装红宝石与macports
  2. 不使用默认的rubygems安装! 与MacPorts的
  3. 使用MySQL的5.1(不5.5)安装RB-的rubygems - 从mysql.com安装的MAC的.dmg
  4. 4.

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

1

降级(来自5.9)到MySQL 5.1中帮助在10.6。 ..运行MySQL和MySQL2宝石。

26

基本上问题是无法找到动态库libmysqlclient。上述解决方案可以工作,但是您需要在重建gem时或者安装新版本的MySQL时重新应用它们。

另一种方法是将包含库的MySQL目录添加到动态加载路径。把我的.bashrc文件如下解决了这个问题:

export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH" 
+0

这对我有效... OSX 10.7.3 for mysql gem 2.8.1 – 2012-03-14 09:07:54

+0

谢谢,这个工作! – mkk 2012-07-03 18:00:37

+1

如果你在'osx 10.8.2'中导出,然后你sudo,你会得到一个警告,例如“DYLD_ environment variables being ignored”,但[这只是一个警告](https://discussions.apple.com/thread/ 4143805?开始= 0&TSTART = 0) – 2012-10-26 23:21:21

1

mysql和mysql2宝石上的红宝石1.9.2两个工作刚刚更新红宝石和安装所需的宝石。

相关问题