gpt4 book ai didi

mysql - 为什么我的 object.save 在一个地方工作而在另一个地方失败?

转载 作者:行者123 更新时间:2023-11-30 23:35:12 25 4
gpt4 key购买 nike

谁能告诉我为什么会这样:

require 'rubygems'
require 'mysql2'

@inverters=Inverter.where(:mac=>@mac)
Inverter.transaction do
@inverters.each do |inverter|
inverter.ip = @client_ip
inverter.save # Object is saved:)!
end
end

但这不是吗?

require 'rubygems'
require 'mysql2'

@outputs=<a two dimensional hash>
Output.transaction do
@outputs.each do |out|
@newOut = Output.new
@newOut.inverter_id = out[:inverter_id]
@newOut.eac = out[:eac]
@newOut.pac = out[:pac]
@newOut.vac = out[:vac]
@newOut.iac = out[:iac]
@newOut.epv = out[:epv]
@newOut.ppv = out[:ppv]
@newOut.vpv = out[:vpv]
@newOut.save # Object fails to save to db:(.

# 2 lines of other code
end
end

当我在 Rails 控制台中手动输入相同的命令时,两个对象都成功保存,但第二个在我的脚本中失败。我进行了广泛的调试,确保所有变量(“out”和“@outputs”)都具有预期值,并且再次在控制台中正常运行。我正在使用 Ruby 1.8.7、Rails 3.0.3 和 mysql2 gem 版本 0.2.7。非常感谢您!

最佳答案

我做的第一件事就是在终端中打开一个单独的选项卡,导航到我的 Rails 应用程序文件夹,然后通过键入以下行来跟踪 mySQL 在幕后发生的情况:tail -f log/开发日志我可以在运行上面的第二个不起作用的脚本时看到,在日志中,在 INSERT into outputs table 行之后,它只会说“ROLLBACK”。发生这种情况的原因是我在 @newOut.save 语句之后有两行随机代码。当我将这两行从事务循环中取出时,一切正常。这显然是一个新手错误,但我希望它对某人有所帮助。

关于mysql - 为什么我的 object.save 在一个地方工作而在另一个地方失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057420/

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