質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

5018閲覧

GASとMySQLの接続ができない

developer1223

総合スコア6

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

1クリップ

投稿2021/12/23 00:29

編集2021/12/23 00:44

前提・実現したいこと

スプレッドシートで管理しているデータが膨大になってきたので、MySQLにデータを移行し、GASでデータを呼び出したいと考えております。

MySQLにデータを移行し、GASで連携するコードを書いたのですが、エラーが発生しております。
調べているとlocalhostは接続できないという記事を見つけたのですが、接続文字列をどう設定すればいいのかわかりません。

発生している問題・エラーメッセージ

2行目
Exception: データベース接続を確立できませんでした。接続文字列、ユーザー名、パスワードを確認してください。

該当のソースコード

GAS

1function myFunction() { 2var con_str = 'jdbc:mysql://localhost:3306/データベース名; 3var user_id = 'ユーザー名'; 4var user_pass = 'パスワード'; 5 6// DBに接続 7var conn = Jdbc.getConnection(con_str, user_id, user_pass); 8var stmt = conn.createStatement(); 9 10var sql = "SELECT * FROM test;"; 11var rs = stmt.executeQuery(sql); 12while(rs.next()) { 13 Logger.log(rs.getString("name")); 14} 15rs.close(); 16 17stmt.close(); 18conn.close(); 19} 20

試したこと

127.0.0.1のIPアドレスを設定したユーザーをMySQLで作成し、試してみましたが、同じエラーが出ました。

補足情報(FW/ツールのバージョンなど)

ポート番号3306は開放しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/12/23 02:47

ipはMySQLのサーバーのIP入れる必要があるのでは。 localhostや127.0.0.0だと「実行している自身」を見に行きます。 GASってローカルサーバでしたっけ…
developer1223

2021/12/23 04:55

サーバーのIPアドレスは新しく設定する必要があるのでしょうか。 GASはGoogle上のサーバーで動くみたいですね。
m.ts10806

2021/12/23 05:28

>サーバーのIPアドレスは新しく設定する必要があるのでしょうか 「DBがインストールされているサーバのIP」なので、インストールされてるなら既に割り振られているはずです。
developer1223

2021/12/23 05:45

statusで確認しましたが Connection: localhost via TCP/IP と表示されていました。
guest

回答1

0

ベストアンサー

statusで確認しましたが
Connection: localhost via TCP/IP と表示されていました。

手っ取り早く言うとあなたの手元の PC 上で MySQL が動いているということですよね。

jdbc:mysql:// の後に書ける候補は次のいずれかです。

  1. あなたの PC にインターネットから接続できるようにしたうえで、あなたの PC にアクセスできるホスト名もしくはグローバル IP
  2. GCP, AZURE, OCI, AWS みたいなとこで MySQL を立てる。そのときに取得したホスト名

金銭的に安価な他の方法として、スプレッドシートを CSV にして LOAD DATA INFILEあたりで取り込む。
(CSV を取り込める GUI ツールはありそうなので適当なのを探してもいいかもです。PHPMyAdmin とかでもできます)

投稿2021/12/30 06:31

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問