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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Google App Engine

Google App Engineは、Googleの管理するデータセンター上でウェブアプリケーションの開発が可能なクラウドコンピュータ技術です。Java、Python、Go用にSDKが用意されています。

MySQL

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

0回答

1439閲覧

GCPのCloudSQLにAppEngineから接続できない

human_kkk

総合スコア0

Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Google App Engine

Google App Engineは、Googleの管理するデータセンター上でウェブアプリケーションの開発が可能なクラウドコンピュータ技術です。Java、Python、Go用にSDKが用意されています。

MySQL

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2021/11/22 14:07

前提・実現したいこと

Google App Engineのstandard環境からnode.jsにてCloud SQLに接続したい
※接続方法はUNIXドメインソケットです。

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

エラーメッセージ Error: connect ENOENT /cloudsql/<cloud sqlのインスタンス接続名>

以下のURLの内容を元に、実装しているのですが、npm startした時にみてみると上記のエラーメッセージが表示されてしまいます
app.yamlで環境変数を設定もし、yamlファイルの名称も「app.standard.yaml」などで試してもだめでした。
https://cloud.google.com/sql/docs/mysql/connect-app-engine-standard#node.js
https://github.com/GoogleCloudPlatform/nodejs-docs-samples/blob/main/cloud-sql/mysql/mysql/server.js

該当のソースコード

ソースコード 'use strict'; const express = require('express'); const mysql = require('promise-mysql'); const fs = require('fs'); const app = express(); app.set('view engine', 'pug'); app.enable('trust proxy'); app.use(express.urlencoded({extended: false})); app.use(express.json()); app.use((req, res, next) => { res.set('Content-Type', 'text/html'); next(); }); const winston = require('winston'); const {LoggingWinston} = require('@google-cloud/logging-winston'); const loggingWinston = new LoggingWinston(); const logger = winston.createLogger({ level: 'info', transports: [new winston.transports.Console(), loggingWinston], }); // [START cloud_sql_mysql_mysql_create_socket] const createUnixSocketPool = async config => { const dbSocketPath = process.env.DB_SOCKET_PATH || '/cloudsql'; // Establish a connection to the database return mysql.createPool({ user: process.env.DB_USER, // e.g. 'my-db-user' password: process.env.DB_PASS, // e.g. 'my-db-password' database: process.env.DB_NAME, // e.g. 'my-database' // If connecting via unix domain socket, specify the path socketPath: `${dbSocketPath}/${process.env.INSTANCE_CONNECTION_NAME}`, // Specify additional properties here. ...config, }); }; // [END cloud_sql_mysql_mysql_create_socket] const createPool = async () => { const config = { connectionLimit: 10, connectTimeout: 10000, // 10 seconds acquireTimeout: 10000, // 10 seconds waitForConnections: true, // Default: true queueLimit: 0, // Default: 0 }; return createUnixSocketPool(config); }; const createPoolAndEnsureSchema = async () => await createPool() .then(pool => { return pool; }) .catch(err => { logger.error(err); throw err; }); let pool; app.use(async (req, res, next) => { if (pool) { return next(); } try { pool = await createPoolAndEnsureSchema(); next(); } catch (err) { logger.error(err); return next(err); } } ); // Serve the index page, showing vote tallies. app.get('/', async (req, res) => { pool = pool || (await createPoolAndEnsureSchema()); try { const recentVotesQuery = pool.query( 'SELECT * FROM table_names;', (error, results) => { res.render('top.ejs', {table_names: results}); } ); } catch (err) { logger.error(err); res .status(500) .send( 'Unable to load page. Please check the application logs for more details.' ) .end(); } }); const PORT = process.env.PORT || 8080; const server = app.listen(PORT, () => { console.log(`App listening on port ${PORT}`); console.log('Press Ctrl+C to quit.'); }); process.on('unhandledRejection', err => { console.error(err); throw err; }); module.exports = server;

試したこと

・環境変数(yamlファイル内)の文字がきちんとあっているかの確認
・SQへcloud shellからアクセスをしてテーブルの中身は確認済み

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

connect ENOENTになる原因がググってもあまり出てこずで困っております。。。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問