2009-08-31 37 views
10

Tôi đã thử khoảng 3-4 giờ cố gắng để có được đá quý mysql để cài đặt cho ruby ​​1.9.1 trên báo tuyết. Các đá quý mysql được sử dụng để làm việc tốt trên 1.9.1 trước khi tôi nâng cấp lên báo tuyết. Tôi đã gỡ cài đặt máy chủ MySQL và đá quý khỏi máy của mình. Sau đó tôi đã tải xuống và cài đặt: mysql-5.1.37-osx10.5-x86_64.dmg. Tôi đã có thể khẳng định rằng phiên bản mới này tôi đã cài đặt đang chạy dưới dạng ứng dụng 64 bit.Snow Leopard + Ruby 1.9.1 + MySQL Gem = Các vấn đề lớn

Tôi đã gỡ cài đặt gem mysql. Khi tôi cố gắng cài đặt các đá quý với lệnh này:

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

Tôi đã nhận lỗi này:

 
GET 304 Not Modified: http://gems.rubyforge.org/latest_specs.4.8.gz 
GET 200 OK: http://gems.github.com/latest_specs.4.8.gz 
Installing gem mysql-2.8.1 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/COPYING 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/COPYING.ja 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/History.txt 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/Manifest.txt 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/README.txt 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/Rakefile 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext/mysql_api/extconf.rb 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext/mysql_api/mysql.c 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/README.html 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/README_ja.html 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/tommy.css 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/lib/mysql.rb 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/gem.rake 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/native.rake 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/vendor_mysql.rake 
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/test/test_mysql.rb 
Building native extensions. This could take a while... 
ERROR: Error installing mysql: 
     ERROR: Failed to build gem native extension. 

/Users/sean/.rvm/ruby-1.9.1-p243/bin/ruby extconf.rb --with-mysql-config=/usr/local/mysql/bin/mysql_config 
checking for mysql_ssl_set()... yes 
checking for rb_str_set_len()... no 
checking for rb_thread_start_timer()... no 
checking for mysql.h... yes 
creating Makefile 

make 
gcc -I. -I/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/i386-darwin9.8.0 -I/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/backward -I/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1 -I. -DHAVE_MYSQL_SSL_SET -DHAVE_MYSQL_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/usr/local/mysql/include -g -Os -arch x86_64 -fno-common -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL -fno-common -O2 -g -Wall -Wno-parentheses -fno-common -pipe -fno-common -o mysql.o -c mysql.c 
In file included from /Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby.h:32, 
       from mysql.c:5: 
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h: In function 'INT2NUM': 
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:464: warning: comparison is always true due to limited range of data type 
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:464: warning: comparison is always true due to limited range of data type 
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h: In function 'UINT2NUM': 
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:472: warning: comparison is always true due to limited range of data type 
mysql.c: In function 'escape_string': 
mysql.c:290: error: lvalue required as left operand of assignment 
mysql.c:290: error: lvalue required as left operand of assignment 
mysql.c: In function 'real_escape_string': 
mysql.c:434: error: lvalue required as left operand of assignment 
mysql.c:434: error: lvalue required as left operand of assignment 
make: *** [mysql.o] Error 1 


Gem files will remain installed in /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1 for inspection. 
Results logged to /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext/mysql_api/gem_make.out 

Tôi đã thử tất cả mọi thứ tôi đã đọc từ các liên kết sau đây.

  1. http://void-design.net/2009/08/05/ruby-191-mysql-and-a-snow-leopard/
  2. http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/
  3. Rails, MySQL and Snow Leopard

Bất kỳ ý tưởng?

+1

http://weblog.rubyonrails.org/2009/8/30/upgrading-to-snow-leopard - Trực tiếp từ blog của RoR – Garrett

Trả lời

15

Sean, tôi thấy rằng bạn đang chạy Ruby 1.9.1 dưới rvm. Tôi đang gặp vấn đề tương tự trong cùng một thiết lập (Snow Leopard, rvm, gói MySQL 64 bit).Tất cả các đá quý thay thế (mysqlplus, kwatch-mysql-ruby, vv) đều thất bại với cùng một lỗi.

Tôi sẽ nghi ngờ việc cài đặt MySQL, nhưng mọi thứ hoạt động như một nhà vô địch theo hệ thống mặc định của Ruby. Vì vậy, tôi tự hỏi nếu rvm không phải là cờ lê khỉ bằng cách nào đó.

EDIT: Tôi đã tìm ra. Tôi đã cài đặt rvm trước khi nâng cấp lên Snow Leopard, vì vậy cài đặt Ruby 1.9.1 của tôi cần được biên dịch lại. Đối với biện pháp tốt, tôi cài đặt lại rvm từ đầu.

Dưới đây là những gì tôi đã làm:

sudo gem uninstall rvm 
rm -rf ~/.gem 
sudo gem install rvm 
rvm-install 
rvm install 1.9.1 
rvm 1.9.1 
env ARCHFLAGS="-arch x86_64" gem install mysql 

(Chú ý:. Bạn không thể sử dụng sudo khi cài đặt đá quý dưới RVM, vì RVM hoạt động bằng cách thay đổi $ PATH)

(Chú ý: tôi đã thêm/usr/local/mysql/bin vào $ PATH của tôi vì vậy tôi không phải chỉ định bất kỳ lệnh khủng khiếp nào trong dòng lệnh args khi cài đặt gem mysql.)

Đá quý mysql được cài đặt mà không bị cản trở.

+0

gravelpup, Cảm ơn bạn. Đó là hoàn hảo. Tôi yêu RVM và giải pháp của bạn đóng đinh nó. –

+0

Tuyệt vời, rất vui khi được nghe. Bây giờ nếu tôi chỉ có thể nhận được cổng ImageMagick của tôi để biên dịch ... Đoán tôi sẽ bắt đầu một chủ đề khác về chủ đề đó. –

+0

Tôi đã gặp vấn đề tương tự khi cài đặt gem mysql với ruby ​​1.9.1 dưới rvm khi nâng cấp lên Snow Leopard. Tôi đã thử đề nghị của Jonathan nhưng vô ích. Một chút đào hơn và có vẻ như bạn cần 'rm -rf ~/.rvm' thay vì' rm -rf ~/.gem' vì đó là nơi rvm lưu trữ các gem cụ thể vm. – fractious

10

Tôi giải quyết vấn đề này bằng cách cài đặt MySQL từ MacPorts và sau đó chạy cùng một lệnh cài đặt gem mà bạn có ở đó.

Vì vậy, đầu tiên, gỡ bỏ cài đặt MySQL bạn có từ gói:

sudo rm /usr/local/mysql 
sudo rm -rf /usr/local/mysql* 
sudo rm -rf /Library/StartupItems/MySQLCOM 
sudo rm -rf /Library/PreferencePanes/My* 
edit /etc/hostconfig and remove the line MYSQLCOM=-YES- 
rm -rf ~/Library/PreferencePanes/My* 
sudo rm -rf /Library/Receipts/mysql* 
sudo rm -rf /Library/Receipts/MySQL* 

Nếu bạn chưa làm được chưa, cài đặt MacPorts từ đây: http://www.macports.org/install.php Có một gói cho Snow Leopard.

Cài đặt mysql5-devel từ MacPorts:

sudo port install mysql5-server-devel 

Nó sẽ làm tất cả các phụ thuộc và sau đó MySQL. Thực hiện theo tất cả các bước cài đặt sau mà trình cài đặt đề xuất - các mục khởi động, vv. MySQL mà nó cài đặt là 64-bit.

Sau đó cài đặt các viên ngọc MySQL với:

env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/opt/local/bin/mysql_config5 

Lưu ý con đường thay đổi đó. MacPorts đặt MySQL ở những nơi khác nhau.

Bạn nên làm tốt.

+0

Tôi vừa cung cấp cho bạn giải pháp một thử và tôi đã nhận lỗi tương tự như trước. Tôi không chắc liệu tôi có cần thử dịch lại ruby ​​1.9.1 hay không. –

+0

Vâng, tôi hy vọng điều này sẽ phù hợp với bạn, nhưng tôi nghĩ vấn đề của bạn là Ruby 1.9.1. Sử dụng ruby ​​Snow Leopard mặc định, nó hoạt động. SL ruby ​​là 1.8.7. – Georges

+0

Đã thực hiện một ít điều tra và tìm thấy điều này: http://github.com/kwatch/mysql-ruby/tree/master – Georges

3

Tôi đã thử tất cả các bước trên không có may mắn, nhưng phát hiện ra một cách giải quyết (hoặc bất kỳ) bằng cách sử dụng đá quý mysqlplus thay vì đá quý mysql:

sudo env ARCHFLAGS="-arch x86_64" gem install mysqlplus 

Và bây giờ ứng dụng ruby ​​MySQL của tôi làm việc như một nét duyên dáng trong Báo tuyết.

+0

Tôi sẽ phải thử. Cảm ơn bạn. –

+0

OH. TÔI THƯỢNG ĐẾ. Nếu có thể, tôi sẽ upvote điều này 100 lần. Sau nhiều giờ Googling không kết quả và lặp đi lặp lại thất bại với mysql, mysql2 và ruby-mysql, bạn đã giải quyết được vấn đề của mình với hai câu và một dòng lệnh. Ngài là người hùng của tôi. Nếu chúng ta gặp nhau bằng cách nào đó, tôi sẽ mua cho bạn một thức uống. – abeger

1

Cài đặt XCode là giải pháp cho tôi

1

Tôi đã gặp vấn đề tương tự với đá quý mysql, rvm và ruby ​​1.9.1. Như đã đề cập trong bài đăng của tôi tại NeptunePhoenix, tôi đã thành công bằng cách cài đặt mysql qua cổng.

Các vấn đề liên quan