gpt4 book ai didi

mysql - ruby/sql 语法未定义方法 `query' 为 nil :NilClass (NoMethodError)

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

我不断收到以下错误消息:

.rb:215:in block in collectData': undefined methodquery' for nil:NilClass (NoMethodError)

这是我的代码:

databases = {
'aaa': Mysql2::Client.new(
host: '',
username: '',
password: '',
database: ''
),
'bbb': Mysql2::Client.new(
host: '',
username: '',
password: '',
database: ''
)
}

client1.query(" bla bla bla").each do |row|
if row['mmm'] == 99
# Look in next db
next_db = databases[row['db']]
row2 = next_db.query("SELECT...")

我从我的第一个 sql 查询 client1.query 中获取数据库的名称,例如 row['db'] = "aaa""bbb"

对于测试这样的东西也不起作用:

client1.query(" bla bla bla").each do |row|
if row['mmm'] == 99
# Look in next db
next_db = databases['aaa']
row2 = next_db.query("SELECT...")

像这样的东西可以工作:

client1 = Mysql2::Client.new(
host: '',
username: '',
password: '',
database: ''
)

client2 = Mysql2::Client.new(
host: '',
username: '',
password: '',
database: ''
)

client1.query(" bla bla bla").each do |row|
if row['mmm'] == 99
# Look in next db
next_db = client2
row2 = next_db.query("SELECT ")

我似乎无法理解为什么我的方法是“未定义的”。

请帮忙,

谢谢!

最佳答案

所以你有你的数据库哈希,你想根据第一个数据库查询的结果查询下一个数据库......

基本上您的代码是正确的,只是您从不检查nil。在这种情况下,无论 row['db'] 返回什么,都不会在 databases 哈希中找到匹配的数据库。我假设这是一个需要修复的异常。

所以...

# hash of databases
databases = {
'aaa' => Mysql2::Client.new(host: '', username: '', password: '', database: ''),
'bbb' => Mysql2::Client.new(host: '',username: '', password: '', database: '')
}

# get the first database
client1 = databases['aaa']

# perform the query
client1.query("bla bla bla").each do |row|
if row['mmm'] == 99
# look in next db
client2 = databases[row['db']]

if (client2)
row2 = client2.query("SELECT...")
else
raise "Database `#{row['db']}` is not defined."
end
end
end

关于mysql - ruby/sql 语法未定义方法 `query' 为 nil :NilClass (NoMethodError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38275867/

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