gpt4 book ai didi

mysql - 使用 ruby​​ 连接到 mysql 时出现问题

转载 作者:数据小太阳 更新时间:2023-10-29 08:21:41 24 4
gpt4 key购买 nike

require 'rubygems'
require 'mysql'
db = Mysql.connect('localhost', 'root', '', 'mohit')
//db.rb:4: undefined method `connect' for Mysql:Class (NoMethodError)
//undefined method `real_connect' for Mysql:Class (NoMethodError)
db.query("CREATE TABLE people ( id integer primary key, name varchar(50), age integer)")
db.query("INSERT INTO people (name, age) VALUES('Chris', 25)")
begin
query = db.query('SELECT * FROM people')
puts "There were #{query.num_rows} rows returned"
query.each_hash do |h|
puts h.inspect
end
rescue
puts db.errno
puts db.error
end

我得到的错误是:

    undefined method `connect' for Mysql:Class (NoMethodError)
OR
undefined method `real_connect' for Mysql:Class (NoMethodError)

编辑 Mysql.methods的返回值

      ["private_class_method", "inspect", "name", "tap", "clone", "public_methods", "object_id", "__send__", "method_defined?", "instance_variable_defined?", "equal?", "freeze", "extend", "send", "const_defined?", "methods", "ancestors", "module_eval", "instance_method", "hash", "autoload?", "dup", "to_enum", "instance_methods", "public_method_defined?", "instance_variables", "class_variable_defined?", "eql?", "constants", "id", "instance_eval", "singleton_methods", "module_exec", "const_missing", "taint", "instance_variable_get", "frozen?", "enum_for", "private_method_defined?", "public_instance_methods", "display", "instance_of?", "superclass", "method", "to_a", "included_modules", "const_get", "instance_exec", "type", "<", "protected_methods", "<=>", "class_eval", "==", "class_variables", ">", "===", "instance_variable_set", "protected_instance_methods", "protected_method_defined?", "respond_to?", "kind_of?", ">=", "public_class_method", "to_s", "<=", "const_set", "allocate", "class", "new", "private_methods", "=~", "tainted?", "__id__", "class_exec", "autoload", "untaint", "nil?", "private_instance_methods", "include?", "is_a?"]

Mysql.methods(false) 的返回值

是[]...空白数组

EDIT2

mysql.rb 文件

 # support multiple ruby version (fat binaries under windows)
begin
require 'mysql_api'
rescue LoadError
if RUBY_PLATFORM =~ /mingw|mswin/ then
RUBY_VERSION =~ /(\d+.\d+)/
require "#{$1}/mysql_api"
end
end

# define version string to be used internally for the Gem by Hoe.
class Mysql
module GemVersion
VERSION = '2.8.1'
end
end

最佳答案

我遇到了同样的问题,并以这种方式解决了:

  1. 确保你只安装了 gem ruby​​-mysql而不是 gem mysql。对我来说,现在:

    $ gem 列表 --local | grep mysql

    ruby-mysql (2.9.2)

  2. 如果不是这样,卸载

    $ sudo gem uninstall mysql

(我卸载了名称中包含 mysql 的所有 gem)然后重新安装ruby-mysql。

在我的例子中,因为我的 mysql 安装在一个 usb 磁盘中 安装命令是:

sudo env ARCHFLAGS="-arch i386" gem install ruby-mysql   --  

--with-mysql-config=/Volumes/usb/opt/bin/osx/mysql/bin/mysql_config

--with-mysql-lib=/Volumes/usb/opt/bin/osx/mysql/lib/

--with-mysql-dir=/Volumes/usb/opt/bin/osx/mysql

(我在 MacO 上使用的是 32 位二进制文​​件,不知道这是否适用于您)

最后,我的 ruby​​ 测试程序是

require 'rubygems'
require 'mysql'


dbh = Mysql.real_connect('localhost', 'root', 'your password', 'TEST')


res = dbh.query("select * from Persons;");

puts res.class

res.each do |row|
puts row.join(" ")
end

关于mysql - 使用 ruby​​ 连接到 mysql 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2591794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com