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

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

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

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

Node.js

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

Q&A

解決済

1回答

555閲覧

Node.jsでmysqlに繋がらない

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

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

Node.js

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

0グッド

1クリップ

投稿2022/12/21 06:59

題名の通り、node.jsでmysqlが繋がりません。
mysqlは、Node.jsをインストールしているだけで使えるのでしょうか?
mysql本体はダウンロードはしていません。
npmで、express、mysql、ejsをインストールしています。
調べると、xamppの場合はmysqlexeにpathを通すとあったので探したのですが、Nodejsでもmysqlexeがあるのかと思ったのですがどこにあるのかわからず、pathが通せずにいます。
mysql exeがあるなら、どこにあるかわかる方、ご教授お願い致します。

ターミナルのエラー

ログインしようとすると、
'mysql' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と表示されます。

やってみたこと

  • XAMPPをインストールしていたので、かぶると使えないかと思い、アンインストールした。
  • Nodejs自体を再インストール

コード

pakage.json

1{ 2 "dependencies": { 3 "ejs": "^3.1.8", 4 "express": "^4.18.2", 5 "mysql": "^2.18.1" 6 } 7}

mysqlの文字はあるので、npmでのインストールは成功?していると思います。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Node.jsのmysqlモジュールは非推奨なのでmysql2モジュールを使いましょう。
これはNode.js初期の頃にMySQLクライアントのライブラリが乱立したので
それらの開発者達が連携してmysql2に共に移行したという経緯があります。
https://cfautog.tokyo/2020/04/09/node-js-mysql2/

使い方は変わらないのでこちらを使いましょう。

bash

1$ npm install mysql2

XAMPP越しにMySQLが導入されているのであれば、
Node.jsでは下記を参考にIDとパスワードを準備すればすぐ使えます
https://goma.pw/article/2015-03-12-0/

js

1// この1行だけで後はほぼmysqlと使い方は同じ 2const mysql = require("mysql2"); 3 4// create the connection to database 5const connection = mysql.createConnection({ 6 host: 'localhost', 7 user: 'root', 8 database: 'test' 9}); 10 11connection.query( 12 'SELECT * FROM `table` WHERE `name` = "Page" AND `age` > 45', 13 function(err, results, fields) { 14 console.log(results); // results contains rows returned by server 15 console.log(fields); // fields contains extra meta data about results, if available 16 } 17);

mysqlは、Node.jsをインストールしているだけで使えるのでしょうか?
mysql本体はダウンロードはしていません。

使えません。
Node.jsに於けるmysqlパッケージはクライアントの真似事をするライブラリです。


「クライアント」に関して理解していないと思うので先受け

MySQLはC++で作られた高速大規模なデータベースシステムです。
これをダウンロードして動かすと、ハードディスク上にどでかいバイナリファイルを作成しつつ
自分のマシンのTCP3306番ポートで待ち受けるデータベースサーバーが起動します。

そのサーバソフトには、同梱されているクライアントのソフトを使ってアクセスします。
このソフトはMySQLが用意した「通信規約」に従ってサーバとデータのやり取りを行いますが、
この通信規約に従って通信するのであれば、別にMySQLに同梱されている純正品を使う必要はありません。

XAMPPはApache, MySQL, PHPの3つを同時に導入するパッケージですが、
PHPという動的HTMLを生成する事が得意な言語にも
PDOというMySQL等のデータベースにアクセスするライブラリが標準搭載されています。
これも別にMySQLに同梱されている純正品クライアントというわけではありません。


調べると、xamppの場合はmysqlexeにpathを通すとあったので探したのですが、Nodejsでもmysqlexeがあるのかと思ったのですがどこにあるのかわからず、pathが通せずにいます。

どんな記事を見てそう判断したのか知りませんが誤りです。

Node.jsで提供されているmysqlライブラリは
mysql.exeみたいな実行ファイルを介さず自力でTCP通信を行い、
MySQLの通信規約を使って対話を行う仕組みなので必要ありません。

Node.jsとMySQLを使うようなサンプルを紹介している記事にもPATHの通し方なんて載ってないでしょ?
https://reffect.co.jp/node-js/express-js-connect-mysql


XAMPPをインストールしていたので、かぶると使えないかと思い、アンインストールした。

以上の説明によりMySQLの核となるサーバは必要です。

XAMPPを再インストールしましょう
しかしXAMPPは初心者しか使わないのでXAMPP由来の問題が発生しても誰も解決してくれません。
「なんか知らんがこうしたら直った」みたいな曖昧な記事しかないのでそのうちストレスでハゲます。
これを良い機会だと思ってXAMPPをやめてしまうのも一つの手段です。

Windowsマシンを使っているのであれば、
WSLという仮想マシンを立ち上げる仕組みを利用してubuntu等のLinuxマシンを立ち上げて
その仮想Linuxマシンの中でMySQLサーバをインストールして用意するのが一般的です。
https://learn.microsoft.com/ja-jp/windows/wsl/install

投稿2022/12/21 08:21

miyabi-sun

総合スコア21158

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

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

退会済みユーザー

退会済みユーザー

2022/12/22 04:44

こんなに細かく丁寧に、ありがとうございます…! Mysql、インストールしました。mysql commandlineから直接行ったらできるのですが、エディタ(VScodeです)からログインしようとするとやはり同じエラーが出てしまいます。 これは、mysqlのディレクトリの場所が問題なのでしょうか?
miyabi-sun

2022/12/26 02:33

> これは、mysqlのディレクトリの場所が問題なのでしょうか? コマンドラインでの1単語目は対象となる「実行ファイル」が必要です。 dirとかcdみたいなものにも実行ファイルが存在します。 コマンドを実行した時、環境変数PATHに記述されているフォルダを先頭から順番に覗いていって 対応する実行ファイルが存在していれば、それを使って実行するという流れです。 VSCode上でコマンドが見つからないと怒られたということは、 環境変数PATHで指定されているフォルダに実行ファイルがないということです。 まぁ、普通にコマンドプロンプト立ち上げるのと比べると動かし方も違うわけですから、慣れない内はそこから動くようにするのは難しいかと思います。 --- 根本的な問題解決にはなっていませんが、 VSCode内からアクセスしたいならVSCode用のプラグインを使ってみては? こんなヤツ https://qiita.com/ymasaoka/items/aa03323bbac7e7c5f1be 他にもMySQLの公式が提供しているWorkbenchというソフトウェアでも グラフィカルにテーブルを確認出来ますし、SQL文の編集・実行も出来ます https://www.mysql.com/jp/products/workbench/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問