2010년 10월 7일 목요일

ruby on rails에 mysql 연동시 만난 error들

그 첫 번째!!
gem install 시에 생긴 에러..

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-config=/usr/local/mysql/bin/mysql_config --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib

mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h


처음에는 path문제라고 생각하고 --with-mysql-config나 --with-mysql-dir이나 --with-mysql-lib 등등의 옵션을 주면서 다시 install 해보았지만 결과는 똑같았다.
몇 시간의 삽질 끝에 알아낸 것은 library가 없어서 뿜어내는 에러라는 것.
뭔가 필요한 library가 없는거다.

그래서 mysql이 개발자 버전이 없나 하고 두리번 거렸는데, 좀 무식하지만 해결책을 찾았다.
xcode를 설치하면 된다.
xcode를 설치하면서 같이 설치되는 library들로 인해, 해결 되었다.



두 번째!!
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

No definition for field_table

No definition for field_def

No definition for field_type

No definition for field_length

No definition for field_max_length

No definition for field_flags

No definition for field_decimals

No definition for time_inspect

No definition for time_to_s

No definition for time_get_year

No definition for time_get_month

No definition for time_get_day

No definition for time_get_hour

No definition for time_get_minute

No definition for time_get_second

No definition for time_get_neg

No definition for time_get_second_part

No definition for time_set_year

No definition for time_set_month

No definition for time_set_day

No definition for time_set_hour

No definition for time_set_minute

No definition for time_set_second

No definition for time_set_neg

No definition for time_set_second_part

No definition for time_equal

No definition for error_errno

No definition for error_sqlstate
Installing RDoc documentation for mysql-2.8.1...

No definition for next_result

No definition for field_name

No definition for field_table

No definition for field_def

No definition for field_type

No definition for field_length

No definition for field_max_length

No definition for field_flags

No definition for field_decimals

No definition for time_inspect

No definition for time_to_s

No definition for time_get_year

No definition for time_get_month

No definition for time_get_day

No definition for time_get_hour

No definition for time_get_minute

No definition for time_get_second

No definition for time_get_neg

No definition for time_get_second_part

No definition for time_set_year

No definition for time_set_month

No definition for time_set_day

No definition for time_set_hour

No definition for time_set_minute

No definition for time_set_second

No definition for time_set_neg

No definition for time_set_second_part

No definition for time_equal

No definition for error_errno

No definition for error_sqlstate
아아니.. 이게 뭐야..
분명 "1 gem installed" 요러한 메세지는 뜨는거 보니까 성공적으로 설치된 것 같긴 한데, 뭔가 깨름칙하다.

그리고 이런 식으로 설치가 되면 db migration이 되질 않는다.

이 문제의 원인은 찾아내지 못했지만 해결책은 찾았다.
mysql설치할 때 ARCHFLAGS 설정을 한다!!
다음과 같이 mysql을 재설치 해보자.
$ gem uninstall mysql
$ sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
그리고나면 깔끔하게 설치가 될 것이다!!
물론 migration도 잘 될 것이고!!

댓글 없음:

댓글 쓰기