0

現在、Ruby 1.8.7 から 1.9.3 にアップグレードし、Rails を 3.2.1 から 3.2.8 または 9 に更新しようとしています。アプリは Ruby 1.9.3-p327 および Rails 3.2.1 で動作しますが、 Rails を新しいバージョンにアップグレードするとすぐに、MySQL エラーが表示され始めます。

(0.2ms)  BEGIN
  SQL (0.5ms)  INSERT INTO `orders` (`cancelled_at`, `completed_at`, `created_at`, `customer_id`, `refunded_at`, `updated_at`, `uuid`, `website_id`, `workflow_state`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?, ?, ?, ?, ?, ?, ?, ?, ?)' at line 1: INSERT INTO `orders` (`cancelled_at`, `completed_at`, `created_at`, `customer_id`, `refunded_at`, `updated_at`, `uuid`, `website_id`, `workflow_state`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
   (0.1ms)  ROLLBACK
Completed 500 Internal Server Error in 194ms

ActiveRecord::StatementInvalid (Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?, ?, ?, ?, ?, ?, ?, ?, ?)' at line 1: INSERT INTO `orders` (`cancelled_at`, `completed_at`, `created_at`, `customer_id`, `refunded_at`, `updated_at`, `uuid`, `website_id`, `workflow_state`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)):
  app/controllers/search_controller.rb:231:in `build_new_order'
  app/controllers/search_controller.rb:432:in `add_to_cart?'
  app/controllers/search_controller.rb:37:in `new'

そして、私たちがやっていることはすべて基本的なことです:

@order = Order.create! @website

Order.new または Order.create を呼び出して @order の有効性を確認すると、パスします (@website も有効です)。save! を呼び出すと、MySQL エラーが発生します。同じ Order.create を実行できます。コンソールで、それは合格です!!

また、エラーが表示されると、サイト全体でエラーが発生します。ワークフローにいくつかの問題が見られたため、ワークフローを 0.8.1 に「ダウングレード」しました。MySQL2 のさまざまなバージョンを試しました (現在は 0.3.11 を使用しています)。代わりに activerecord-mysql2-adapter を使用してみましたが、サイトが完全に壊れてしまいました。Paper Trail の別のバージョン (現在は 2.6.4 を使用) は試していませんが、コンソールで動作するため、モデルに集中しすぎている可能性があります。ただし、カートに何かを追加して Order を作成するまでは、コントローラーは機能します。

Web、Rails Web サイト、ワークフロー、mysql2、およびスタック オーバーフローを検索しても、何も見つかりませんでした。

他の誰かが似たようなことに遭遇しましたか? 他の提案をいただければ幸いです。ありがとう!

編集:

3.2.2 のリリース ノートには、「クエリ キャッシュ インストルメンテーションにはペイロードにバインディングが含まれる」と記載されています。だから私は「キャッシュインストルメンテーション」を検索し、これを見つけました:

https://github.com/orslumen/record-cache/issues/21

4

1 に答える 1

0

レコード キャッシュを削除すると、すべてが期待どおりに機能します。1 つのモデルでしか使用していなかったので、パフォーマンスが大幅に低下することはありませんでした。奇妙なことに、これは Order モデルではなく Product モデルにありました。

于 2012-12-13T06:07:21.637 に答える