私はこれを数日間使っています。これがActiveRecordエラーとアプリケーショントレースです。
ArgumentError: negative string size (or size too big):
EXEC sp_executesql N'SELECT [ops_jobs_join].* FROM [ops_jobs_join]
WHERE (work_center_id = N''M*1053'' OR work_center_id = N''M*1035'' OR
work_center_id = N''M*1037'' OR work_center_id = N''M*1036'') AND
(status != N''C'') AND (start_date != N'''') AND
(start_date >= N''20120516'') AND (comp_date <= N''20120527'') AND
(work_order NOT LIKE N''LA%'')
ORDER BY work_center_id ASC, start_date ASC, starting_shift_num ASC,
status ASC, priority ASC, comp_date ASC, ending_shift_num ASC,
due_date ASC, sequence_number ASC'
Op.allを呼び出すと、次のエラーが発生します。
ActiveRecord ArgumentError:負の文字列サイズ(またはサイズが大きすぎます)
使用する列にUnicode文字が含まれている可能性があることを無視すると、正常に機能します。すべてのデータは問題なくデータベースに保存されていますが、何らかの理由でrails3にはデータがありません。
where句の中にはレコードを返すものもあれば、同じエラーが発生するものもあります。
activerecord-sqlserver-adapter(3.2.4)lib / active_record / connection_adapters / sqlserver / database_statements.rb:421:in `fetch_all '
これは、次の2つの投稿に似ています。
最初の投稿の解決策は、避けたい宝石を変更することのようです。
テーブルを確認しましたが、フィールド名としてキーワードを使用しているとは思いません。
私はこれに似た他のクエリを使用し、それらは正常に機能します。唯一の違いは、where句で使用する値です(work_center_id = N''M * 1053'')。