繁体   English   中英

ActiveRecord SQL Server适配器未保存事务中的更改

[英]ActiveRecord SQL Server Adapter not saving changes in transaction

我正在使用Rails Gem activerecord-sqlserver-adapter从MS SQL数据库读取。 我们仍然在Rails 4.2.6上,因此我们在使用4.2.0版本的gem以及tiny_tds。

从数据库读取可以正常工作,但是写入没有任何效果。

在此示例中,我有一个对象正在更新以下参数:

(byebug) VisualBase.transaction do visual_line.freight_note = 'test' 
end
"test"
(byebug) visual_line.freight_note = 'test'
"test"
(byebug) VisualBase.transaction do visual_line.save! end
true
(byebug) 

这是日志:

SQL (1.3ms)  BEGIN TRANSACTION
SQL (0.7ms)  COMMIT TRANSACTION
SQL (4.2ms)  BEGIN TRANSACTION
SQL (1.5ms)  COMMIT TRANSACTION

没有实际写入数据库吗? 通常,当从数据库中读取SQL命令时,会看到正在执行的SQL命令的日志,但是在写入数据库时​​,甚至看不到它。 有人遇到过吗?

针对以下答案之一,这是我最近的尝试:

VisualBase.transaction do 
    visual_line = VisualCustomerOrderLine.where('cust_order_id' => 'CO-304560').order(:rowid).first
    visual_line.freight_note = 'test' 
    visual_line.save!
end

VisualCustomerOrderBinary Load (1.4ms)  EXEC sp_executesql N'SELECT  [CUST_ORDER_BINARY].* FROM [CUST_ORDER_BINARY] WHERE [CUST_ORDER_BINARY].[CUST_ORDER_ID] = @0  ORDER BY [CUST_ORDER_BINARY].[CUST_ORDER_ID] ASC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY', N'@0 nvarchar(max)', @0 = N'CO-304560'  [[nil, "CO-304560"]]
  VisualCustomerOrderLine Load (3.8ms)  EXEC sp_executesql N'SELECT [CUST_ORDER_LINE].* FROM [CUST_ORDER_LINE] WHERE [CUST_ORDER_LINE].[cust_order_id] = N''CO-304560'''
  SQL (0.9ms)  BEGIN TRANSACTION
  VisualCustomerOrderLine Load (3.5ms)  EXEC sp_executesql N'SELECT  [CUST_ORDER_LINE].* FROM [CUST_ORDER_LINE] WHERE [CUST_ORDER_LINE].[cust_order_id] = N''CO-304560''  ORDER BY [CUST_ORDER_LINE].[rowid] ASC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY'
  SQL (38.0ms)  COMMIT TRANSACTION

不幸的是,当我检查数据库时,该值仍然为空。 看日志,我看不到写尝试。

VisualBase.transaction do 
  visual_line = VisualLine.find(4711)
  visual_line.freight_note = 'test' 
  visual_line.save!
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM