7

私はこれを数日間使っています。これが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'')。

4

1 に答える 1

2

データを操作するためのRailsのデフォルトのエンコーディングはUTF8です。データベースでもこのエンコーディングを使用する必要があります。それを変更すると、すべてがうまくいく必要があります。

于 2012-07-20T20:34:28.687 に答える