[英]Execute SQL query from Rails when connecting to SQL Server 2005 through activerecord-sqlserver-adapter
[英]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.