4

localhost データベースに接続しようとすると、多くの問題が発生します。mysqlおよびmysql-simpleノード モジュールを使用してみましたが、どちらの場合も接続できません。

「mysql」モジュールで使用したものは次のとおりです。

var mysql = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  port     : '8000',
  user     : 'uber',
  password : 'pass',
});

connection.connect(function(err) {
      if (err) throw err;

      console.log('Connection Successful');
});


connection.query('USE someDB', function(err) {
  if (err) throw err;

  console.log('Query Successful');
});

そして、「mysql-simple」モジュールで使用したものは次のとおりです。

var database = require('mysql-simple');
database.init('uber', 'pass', 'mysql', 'localhost', 8000);

database.querySingle('SELECT Host FROM user', function(err, results) {
    if (err) {
        console.log('error fetching some active users: ' + err);
        return;
    }
    log('Query Successful');
    for (var i = 0; i < results.length; i++)
        console.log('got active user ' + results[i]);
}

どちらの場合も、node.js サーバーを実行すると、接続がログに記録されません。localhost を「127.0.01」に置き換え、パスワードが正しいことを確認するために新しいユーザーを作成しようとしましたが、役に立ちませんでした。繋がらないのはなぜ?

ありがとう

4

7 に答える 7

7

ほとんどの場合、ネットワークがオフになっています。つまり、mysql サーバーは TCP/IP ではなく UNIX ソケットを介してクライアントと通信します。実行中の mysql クライアントをチェックアウトし、「ステータス」コマンドを実行できます。そこにポート番号が表示されている場合、mysql サーバーは TCP/IP 経由で通信しています。そうでない場合は、「ソケット パス名…」のようなものが表示されます。パス名を取得し、node.js 接続パラメーターに指定します。

... socketPath: '/opt/lampp/var/...', ...

https://github.com/felixge/node-mysqlページで確認してください (「socketPathname」を検索してください)。

それがあなたの問題です。

于 2014-07-12T18:16:43.487 に答える
2

ソケットへのパスを表示するには、mysql_config を使用する必要があります。
これは私のMACのサンプルです

QuyLes-MacBook-Pro:freelancer quyle$ mysql_config
Usage: /Applications/MAMP/Library/bin/mysql_config [OPTIONS]
Options:
        --cflags         [-I/Applications/MAMP/Library/include -fno-omit-frame-pointer   -g -DNDEBUG]
        --include        [-I/Applications/MAMP/Library/include]
        --libs           [-L/Applications/MAMP/Library/lib  -lmysqlclient  -lz]
        --libs_r         [-L/Applications/MAMP/Library/lib   -lmysqlclient_r  -lz]
        --plugindir      [/Applications/MAMP/Library/lib/plugin]
        --socket         [/Applications/MAMP/tmp/mysql/mysql.sock]
        --port           [0]
        --version        [5.5.42]
        --libmysqld-libs [-L/Applications/MAMP/Library/lib  -lmysqld]
        --variable=VAR   VAR is one of:
                pkgincludedir [/Applications/MAMP/Library/include]
                pkglibdir     [/Applications/MAMP/Library/lib]
                plugindir     [/Applications/MAMP/Library/lib/plugin]

次に、MysqlConnection のキー socketPath を追加します。
私のサンプルで怒鳴る

MysqlServer: {
     adapter: 'sails-mysql',
     host: 'localhost',
     user: 'root', //optional
     password: 'root', //optional
     database: 'nodejs', //optional,
     socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock'    
},
于 2017-01-04T11:49:44.363 に答える
1

MySQL と Express が同じポートで実行されていることを確認してください。ポート 3036 で実行される XAMPP から MySQL をバンドルしました。app.listen を 3036 に設定すると、コードが機能しました。最後に!

于 2016-12-15T05:42:59.283 に答える
0

このコードを試してみてください

var mysql = require('mysql');

var connection = mysql.createConnection(
    {
      host     : 'localhost',
      user     : 'root',
      password : '',
      database : 'urdatabase',
    }
);

connection.connect();


query = connection.query("SELECT * FROM UrTable;");
    query
    .on('error', function(err) {
        console.log( err );

    })
    .on('result', function( data ) {
        socket.emit('YourData',data);
    });

これがお役に立てば幸いです

于 2013-07-05T20:43:02.890 に答える