2

リモートの mysql データベースに挿入しようとしています。私は正しく接続でき、そこから問題なく「選択」を照会できます。ただし、選択できる同じテーブルへの挿入は実行できません。私のバインドと関係があると思われますが、これは、同じ Arel を使用して挿入すると思われる sqlite3 を機能させるために使用していたものとほぼ同じです。

@result = @db.query("insert into lead_to_processes (case_number, style_of_case) values (?,?)", [
      self.case_number.to_blob.force_encoding("UTF-8"),
      self.style_of_case.to_blob.force_encoding("UTF-8")
    ]
)

最終的な目標は、モデル内からリモート データベースにクエリを実行し、データを挿入できるようにすることです。Octopus を使用してみましたが、テーブルがデータベースとは異なるため、うまくいきませんでした。

このユーザーには、データベースに対する完全な権限があります。

コメントからのガイダンスに従って、構文を変更し、別のエラーが発生しています

Mysql2::Error: SQL 構文にエラーがあります。

しかし、私は今このようなクエリをやっています

@db = Mysql2::Client.new(connectionstring)

 @case_number            =  @db.escape(self.case_number)
 @style_of_case          =  @db.escape(self.style_of_case)

@db.query("insert into lead_to_processes (case_number, style_of_case) VALUES
(#{@case_number}, #{@style_of_case})

アイデアやガイダンスはありますか?また、挿入している変数をカプセル化する '' でこれを試しました

4

2 に答える 2

1

私のコードには奇妙な文字がいくつかあったと思うので、UTF-8 エンコーディングを強制し、以下の gsub を使用して文字を削除する必要がありました。すべてが流れています。

アドバイスありがとう

@db.escape(self.style_of_case.force_encoding("UTF-8"))
@db.escape(self.case_number.gsub(/[\xC2]/,'').gsub(/[\xA0]/,'').force_encoding("UTF-8"))
于 2013-04-09T19:49:52.280 に答える
0

終了引用符が欠落している可能性はありますか?

これ

@db.query("insert into lead_to_processes (case_number, style_of_case) VALUES
(#{@case_number}, #{@style_of_case})

する必要があります

@db.query("insert into lead_to_processes (case_number, style_of_case) VALUES
(#{@case_number}, #{@style_of_case}") <== notice the quote at the end.
于 2013-04-09T19:45:39.620 に答える