mysqlノードパッケージを使用して、Node.jsから自分のパーソナルコンピュータのローカルmysqlデータベースに接続できません。私のNode.jsプログラムはmysqlデータベースと同じコンピュータ上にあるので、ネットワークは必要ありません。私はスタックオーバーフローで複数のソリューションを試してみましたが、うまくいかないようです。私のmysqlデータベースにNode.jsで接続できません(connection.connectの問題)
私のディレクトリ構造:
project_root/
mysql/
connection.js
node_modules/
....
server.js
package.json
connection.jsの内容は、以下のようになり、エラーが「connection.connect」との行で発生します。私はこれを知っているので、 "function(err)"を実行しているコールバック関数は "Mysql connection error"を出力し、コンソールで "null"を出力するためです。
var fs = require('fs');
var mysql = require('mysql');
var connection_data = JSON.parse(fs.readFileSync('../config/mysql.json', 'utf8'));
// JSON.stringify(connection_data)
// {"host":"127.0.0.1","port":3306,"user":"root","passwd":"xxxxxxxxxxx","db":"mydatabase"}
var connection = mysql.createConnection({
host : connection_data['host'],
user : connection_data['user'],
password : connection_data['passwd'],
database: connection_data['db'],
charset: "utf8_general_ci",
socketPath : '/tmp/mysql.sock'
});
export_connection = connection.connect(function(err) {
console.log("Mysql connection error");
console.log(err);
});
module.exports = export_connection
他のリンクでは、以下に示すコマンドラインでmysqlステータスを調べることを推奨しています。私はNode.js mysql接続をステータスに表示されているのと同じソケットに接続するように設定しています。
mysql> status
--------------
mysql Ver 14.14 Distrib 5.7.18, for osx10.12 (x86_64) using EditLine wrapper
Connection id: 237509
Current database:
Current user: [email protected]
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.18 MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /tmp/mysql.sock
Uptime: 1 day 8 hours 9 min 18 sec
connection_data [ 'ホスト']は127.0.0.1、connection_data [ 'ユーザ']であることに留意されたいルートとconnection_data [ 'DB']は、既存のデータベースに対応しています。
私の間違い。コードは実際に動作します。なぜ私はそのエラーメッセージを表示するのか分かりません。 – jacksonSmith
あなたのコードがエラーメッセージを表示するのは、それがあなたのコールバックが行うことです(そしてあなたのコールバックはすべてそうです)。 'err'が設定されていない場合(例えば、' undefined'または 'null'の場合)、エラーがなかったことを意味します。 – Kryten