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

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

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

NestJSは、Node.jsアプリケーションを構築するためのフレームワーク。Typescript製でAngularの影響を強く受けています。Expressで利用できるアーキテクチャをそのまま利用でき、保守が簡単なアプリケーションの構築が可能。開発を容易にするCLIも用意されています。

MySQL

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

1814閲覧

NestJSでtypeormライブラリを使って、MySQLにアクセスするも接続できない

nakam_taro

総合スコア15

NestJS

NestJSは、Node.jsアプリケーションを構築するためのフレームワーク。Typescript製でAngularの影響を強く受けています。Expressで利用できるアーキテクチャをそのまま利用でき、保守が簡単なアプリケーションの構築が可能。開発を容易にするCLIも用意されています。

MySQL

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2022/07/06 14:41

今はNestJSでWebAPIを作成しようとしています。

問題はタイトルにあるように、NestJSのサーバーを起動しようとした際に、

Error: connect ECONNREFUSED 127.0.0.1:3306 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1138:16) -------------------- at Protocol._enqueue (/略/node_modules/mysql/lib/protocol/Protocol.js:144:48) at Protocol.handshake (/略/node_modules/mysql/lib/protocol/Protocol.js:51:23) at PoolConnection.connect (/略/node_modules/mysql/lib/Connection.js:116:18) at Pool.getConnection (/略/node_modules/mysql/lib/Pool.js:48:16) at /略/src/driver/mysql/MysqlDriver.ts:1234:18 at new Promise (<anonymous>) at MysqlDriver.createPool (/略/src/driver/mysql/MysqlDriver.ts:1231:16) at MysqlDriver.connect (/略/src/driver/mysql/MysqlDriver.ts:387:36) at DataSource.initialize (/略/src/data-source/DataSource.ts:232:27)

というエラーが出てきてしまいます。
TypeOrmの記述は以下です。

import { Module } from '@nestjs/common'; import { UsersModule } from './users/users.module'; import { TypeOrmModule } from '@nestjs/typeorm' @Module({ imports: [ UsersModule, TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', port: 3306, username: 'root', password: '略', database: '略', autoLoadEntities: true }) ], controllers: [], providers: [], }) export class AppModule { }

何が悪いのかが全く見当ついておらず申し訳ありませんが、アドバイス頂けますと幸いです。

MySQLはDocker Desktopの機能でRunして作ったものと別にMySQLをDockerで入れたもの2つ試してみましたが、
どちらも接続できませんでした。

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

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

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

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

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

hoshi-takanori

2022/07/06 16:35

Docker をお使いなら localhost ではない可能性が…。まず普通に mysql コマンドでつながることを確認しましょう。
nakam_taro

2022/07/07 11:57

コメント頂きましてありがとうございます。 dockerでipが違うということを始めて知りました。 他の人もつまづく人がいるか分かりませんが、解決方法を記載します。 docker ps →mysqlのコンテナIDを調べる docker inspect コンテナID | grep IPAddress →mysqlのIPAddressを調べる 上記を元にIPAddressを調べる こちらで上手くいきました。 https://mebee.info/2021/08/05/post-40153/
nakam_taro

2022/07/07 11:57

回答者の方は本当にありがとうございました! 助かりました。
guest

回答1

0

自己解決

dockerがlocalhostではないかもしれないという指摘で、解決に至りました。
本当に助かりました。

解決方法は以下になります。
docker ps
→mysqlのコンテナIDを調べる
docker inspect コンテナID | grep IPAddress
→mysqlのIPAddressを調べる
上記を元にIPAddressを調べる
こちらで上手くいきました。
https://mebee.info/2021/08/05/post-40153/

また余談ですが、mysqlのライブラリではmysql8に接続ができなかったので、
npm install mysql2に切り替えると接続できました。
※こちらは別事象

投稿2022/07/07 12:00

nakam_taro

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問