Activerecord “0”附近的语法不正确:EXEC sp_executesql N'SELECT[users].*从[users]偏移量0行获取下一个仅@0行,N'@0 int',@0=1

Activerecord “0”附近的语法不正确:EXEC sp_executesql N'SELECT[users].*从[users]偏移量0行获取下一个仅@0行,N'@0 int',@0=1,activerecord,ruby-on-rails-5,rails-activerecord,sql-server-2017,rails-5.1.6,Activerecord,Ruby On Rails 5,Rails Activerecord,Sql Server 2017,Rails 5.1.6,我正在使用rails 5.1.6和activerecord sqlserver适配器5.1.6,tiny_tds 2.1.2。和SQL Server 2017 数据库访问正常 SQL 1.1ms使用[MIST_测试] 用户加载1.5ms EXEC sp_executesql N'从中选择[users].* [用户]偏移量0行仅取下@0行,@0 int',@0=1 [[LIMIT,nil]] ActiveRecord::StatementInvalid:TinyTds::错误:附近的语法不正确 “

我正在使用rails 5.1.6和activerecord sqlserver适配器5.1.6,tiny_tds 2.1.2。和SQL Server 2017

数据库访问正常

SQL 1.1ms使用[MIST_测试]

用户加载1.5ms EXEC sp_executesql N'从中选择[users].* [用户]偏移量0行仅取下@0行,@0 int',@0=1 [[LIMIT,nil]]

ActiveRecord::StatementInvalid:TinyTds::错误:附近的语法不正确 “0.”:EXEC sp_executesql N“从[users]偏移量0中选择[users].* 行仅取下@0行,@0 int',@0=1

从 C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/activerecord-sqlserver-adapter-5.1.6/lib/active\u record/connection\u adapters/sqlserver/database\u语句。rb:368:in `各自的

由TinyTds::错误导致:“0”附近的语法不正确

从 C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/activerecord-sqlserver-adapter-5.1.6/lib/active\u record/connection\u adapters/sqlserver/database\u语句。rb:368:in `各自的

SQL Server需要“ORDER BY”才能使用“OFFSET”子句


有人能帮忙吗?

您能解释一下您正在启动的查询和确切的用例吗?在我的rails用户控制器中,我试图使用user查找第一条记录。首先,它会抛出一个错误,如下所示。EXEC sp_executesql N'SELECT[users].*FROM[users]OFFSET 0 ROWS FETCH NEXT@0 ROWS ONLY',N'@0 int',@0=1是专门针对用户的。第一次查询还是所有查询?您能试试User.all吗?User.all显示所有记录。目前我们正在将rails 3.2 ruby1.9.3升级到rails 5.1.6ruby2.5。rails活动记录会话存储总是抛出偏移问题。我们的数据库是sql server 2017,具有组管理帐户。适配器:sql server用户名:XXXXX$host:localhost Trusted\u连接:是集成安全性:true;我也有同样的问题——从Rails 4.2/SQL Server 2008到Rails 5.2/SQL Server 2016,得到了完全相同的错误。User.find1=>ActiveRecord::StatementInvalid TinyTds::Error:靠近“OFFSET”的语法不正确::EXEC sp_executesql N'SELECT[Users].[idUsers]=@0 ORDER BY[Users].[idUsers]ASC OFFSET 0行仅获取下一行@1行,@0 int,@1 int,@0=1,@1=1有趣的是,当我使用Rails 4.2连接到SQL Server 2016时,这个错误消失了,因此,这可能与ActiveRecord/SQLServer适配器或tinytds层中的更改有关。您能详细解释一下您正在启动的查询和确切的用例吗?在我的rails用户控制器中,我试图使用user查找第一条记录。首先,它抛出一个错误,如下所示。EXEC sp_executesql N'SELECT[users].*FROM[users]偏移量0行仅获取下一个@0行,@0 int',@0=1它是专门用于用户的第一次查询还是所有查询?您能试试User.all吗?User.all显示所有记录。目前我们正在将rails 3.2 ruby1.9.3升级到rails 5.1.6ruby2.5。rails活动记录会话存储总是抛出偏移问题。我们的数据库是sql server 2017,具有组管理帐户。适配器:sql server用户名:XXXXX$host:localhost Trusted\u连接:是集成安全性:true;我也有同样的问题——从Rails 4.2/SQL Server 2008到Rails 5.2/SQL Server 2016,得到了完全相同的错误。User.find1=>ActiveRecord::StatementInvalid TinyTds::Error:靠近“OFFSET”的语法不正确::EXEC sp_executesql N'SELECT[Users].[idUsers]=@0 ORDER BY[Users].[idUsers]ASC OFFSET 0行仅获取下一行@1行,@0 int,@1 int,@0=1,@1=1有趣的是,当我使用Rails 4.2连接到SQL Server 2016时,这个错误消失了,因此它可能与ActiveRecord/SQL Server适配器或tinytds层的更改有关。