【问题标题】:How do I use Ruby to connect to a MySql database outside of Rails as a scripting language如何使用 Ruby 作为脚本语言连接到 Rails 之外的 MySql 数据库
【发布时间】:2014-07-31 14:12:04
【问题描述】:

您好,我使用 Ruby 作为脚本语言。不是为了 Web 开发,而是为了连接到我计算机上的本地数据库并对其进行操作。

我想知道如何连接。我需要下载/导入工具吗?我需要什么才能开始?

谢谢,


更新

我做了 gem install mysql2 并运行了以下 ruby​​ 文件

require 'mysql2'  

#my = Mysql.new(hostname, username, password, databasename)  
con = Mysql.new('localhost', 'nverma', 'something', 'ruby')  
rs = con.query('select * from contacts')  
rs.each_hash { |h| puts h['name']}  
con.close

并得到以下错误:-

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext
 /kernel_require.rb:55:in `require': dlopen(/Library/Ruby/Gems/2.0.0/gems/mysql2-0.3.16/lib/mysql2 
 /mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib (LoadError)
 Referenced from: /Library/Ruby/Gems/2.0.0/gems/mysql2-0.3.16/lib/mysql2/mysql2.bundle
 Reason: image not found - /Library/Ruby/Gems/2.0.0/gems/mysql2-0.3.16/lib/mysql2/mysql2.bundle
 from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext 
 /kernel_require.rb:55:in `require'
 from /Library/Ruby/Gems/2.0.0/gems/mysql2-0.3.16/lib/mysql2.rb:8:in `<top (required)>'
 from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext
 /kernel_require.rb:135:in `require'
 from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext
 /kernel_require.rb:135:in `rescue in require'
 from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext
 /kernel_require.rb:144:in `require'
 from sol5.rb:1:in `<main>'

请帮忙!

【问题讨论】:

  • 查看mysql2 gem。
  • 请查看更新后的问题!

标签: mysql ruby database-connection


【解决方案1】:

一种选择是使用mysql2 gem:

gem install mysql2

连接到您的数据库:

client = Mysql2::Client.new(:host => "localhost", :username => "root")

查询数据库:

results = client.query("SELECT * FROM users")

【讨论】:

    【解决方案2】:

    查看您的更新,Mysql 课程是您自己的课程吗?如果可以,您也可以发布该代码吗?

    如果不是,并且您尝试在这里直接使用 mysql2,那么您需要按照@infused 在另一个答案中所说的方式实例化数据库连接:

    con = Mysql2::Client.new(host: "localhost", username: "root")
    

    【讨论】:

      猜你喜欢
      • 2012-04-12
      • 1970-01-01
      • 2018-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      相关资源
      最近更新 更多