2

わかりましたので、 https://developers.google.com/apps-script/jdbcのチュートリアル コードで問題を示します。

function insert() {
  var conn = Jdbc.getConnection("jdbc:mysql://<host>:<port>/<instance>", "user", "password");

  conn.setAutoCommit(false);
  var stmt = conn.prepareStatement("insert into person (lname,fname) values (?,?)");
  var start = new Date();
  for (var i = 0; i < 5000; i++) {
    // Objects are accessed using 1-based indexing
    stmt.setObject(1, 'firstName' + i);
    stmt.setObject(2, 'lastName' + i);
    stmt.addBatch();
  }
  var res = stmt.executeBatch();
  conn.commit();
  conn.close();
  var endTime = new Date();
  Logger.log("time is " + (endTime.getTime() - start.getTime()) + "ms");
  Logger.log("res has " + res.length);
}

私はスロバキア出身で、この行を変更した後、žťščľýá のような特殊文字があります。

stmt.setObject(1, 'firstName' + i);

stmt.setObject(1, 'žťščľýá' + i);

もらいます???? 私のデータベースに utf8_general_ci があり、私のテーブルの 画像には

私はMySQLでこのJDBCサービスを見てきました:UTF-8エンコーディング/デコーディングと、接続リンクの後に多くの人が使用することを提案しているUtilities.newBlob("").setDataFromString("foo", "UTF-8").getDataAsString("UTF-16")このJDBC文字エンコーディングも試し?characterEncoding=utf8ましたが、エラーメッセージが表示されます.

4

1 に答える 1

0

そこにある文字を使用して、 Google Cloud SQL (MySQL 5.5)に正常に書き込むことができます。これは、私がアクセスできる唯一の MySQL DB です。

私がanimalsと呼んだ単純なテーブルが正しいデータを取得していることがわかります。私も日本語を試してみましたが、うまくいきました。

ここに画像の説明を入力

これが私が使用したコードです-

function writeEncodingIssue() {
  var conn = Jdbc.getCloudSqlConnection("jdbc:google:rdbms://<MY_INTSANCE_NAME>/mysql");
  conn.setAutoCommit(false);
  var stmt = conn.prepareStatement("insert into animals (name) values (?)");
  for (var i = 0; i < 2; i++) {
    stmt.setObject(1, 'žťščľýá' + i);//ショッピング
    stmt.addBatch();
  }
  var res = stmt.executeBatch();
  conn.commit();
  conn.close();
}

おそらく、Java などでテスト プログラムを作成して、これを Apps Script の問題に切り分けることができますか?

編集: MySQL でこの問題を再現できました。イシュー トラッカー アイテムが更新されました。Apps Script チームがこれを調査しています。

于 2013-05-05T22:15:27.710 に答える