提问人:rampion 提问时间:2/9/2013 最后编辑:tadmanrampion 更新时间:1/18/2023 访问量:575
使用 DataMapper 时找不到_mysql_init
_mysql_init not found when using DataMapper
问:
我有一个简单的MySQL表:
% mysql -u rampion dev -e 'describe person'
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | UNI | NULL | auto_increment |
| uid | varchar(256) | NO | PRI | NULL | |
+-------+--------------+------+-----+---------+----------------+
我想运行一个简单的 DataMapper 脚本:
# temp.rb
require 'rubygems'
require 'datamapper'
DataMapper::Logger.new($stdout, :debug)
DataMapper.setup(:default, "mysql://rampion@localhost/dev")
class Person
include DataMapper::Resource
property :id, Serial
property :uid, String
end
DataMapper.finalize
p Person.first_or_create(:uid => 'Steve')
但是当我运行它时,我收到动态链接器错误:
% ruby temp.rb
~/.rvm/gems/ruby-1.8.7-p334/gems/dm-validations-1.0.2/lib/dm-validations.rb:33: warning: already initialized constant OrderedHash
DataObjects::URI.new with arguments is deprecated, use a Hash of URI components (~/.rvm/gems/ruby-1.8.7-p334/gems/dm-do-adapter-1.0.2/lib/dm-do-adapter/adapter.rb:215:in `new')
dyld: lazy symbol binding failed: Symbol not found: _mysql_init
Referenced from: ~/.rvm/gems/ruby-1.8.7-p334/gems/do_mysql-0.10.12/lib/do_mysql/do_mysql.bundle
Expected in: flat namespace
dyld: Symbol not found: _mysql_init
Referenced from: ~/.rvm/gems/ruby-1.8.7-p334/gems/do_mysql-0.10.12/lib/do_mysql/do_mysql.bundle
Expected in: flat namespace
zsh: trace trap ruby temp.rb
我已经设置为 ,这是我安装MySQL的地方,它似乎已经在那里定义了:LD_LIBRARY_PATH
/usr/local/mysql/lib
_mysql_init
% grep '_mysql_init' $LD_LIBRARY_PATH/libmysqlclient.18.dylib
Binary file /usr/local/mysql/lib/libmysqlclient.18.dylib matches
我不知道我需要做些什么来解决这个问题。
答:
0赞
Dorian
4/1/2022
#1
似乎是旧版本MySQL的问题,现在不应该发生,请参阅 https://github.com/brianmario/mysql2/issues/121
评论
sudo aptitude reinstall libmysqlclient-dev; gem install mysql2
bundle install
gem pristine --all
gem up