【问题标题】:How to utilize this MySQL javascript code to create a database / write a query如何利用这个 MySQL javascript 代码创建数据库/编写查询
【发布时间】:2016-07-24 20:15:02
【问题描述】:

刚开始学习使用 nodejs 和 javascript 来制作一些基本的服务器和数据库来查看,我们有这个代码可以使用:

var mysql = require('mysql');

var connection = mysql.createConnection(
    {
      host     : 'stusql.dcs.shef.ac.uk',
      port     : '3306',
      user     : 'USERNAME',
      password : '********',
      database : 'DBNAME'
    }
);
connection.connect();
var query = connection.query('SELECT * FROM device');

query.on('error', function(err) {
    throw err;
});

query.on('fields', function(fields) {
    console.log(fields);
});

query.on('result', function(row) {
    console.log(row);
});
connection.end();

因此,我们现在应该将我们的登录名和密码放入这段代码中(我已经在我的版本中这样做了),然后创建一个小型数据库并编写一个查询。这部分怎么做?

我是否去主机以及如何使用此代码创建一个小型数据库并编写查询...没有解释,我在 webstorm IDE 上运行了此代码,它运行但不久后它抛出错误从代码。任何帮助将不胜感激!

【问题讨论】:

  • mysql.js:16 throw err; ^ Error: connect ETIMEDOUT 这是代码中的 throw err 部分,如果我认为它等待的时间过长,它会告诉它抛出错误。我只是不知道如何使用 mySQL 创建数据库,并且还根据这段代码编写查询,你知道吗?
  • 可能您的查询时间过长,或者您的连接有问题,您可以使用命令行工具连接到同一个数据库吗?
  • 如何建立一个连接到这个的数据库?

标签: javascript mysql node.js database server


【解决方案1】:

虽然您可以执行所有您想要的查询,但我认为不需要动态创建数据库或表。 我只将connection.query() 用于CRUD Operations

但您仍然可以这样做。请参阅代码。

我添加了setTimeout(),以便您在运行代码时可以清楚地看到它发生了什么。

var mysql = require('mysql');
var config={
      host     : 'localhost',
      port     : '3306',
      user     : 'root',
      password : 'root',
    }
var connection = mysql.createConnection();
connection.connect(config);
connection.query('drop database if exists mydb',function(err){
  if(err)
    return console.log(err);
  console.log('deleted db');

  setTimeout(function(){
    connection.query('create database if not exists mydb',function(err){
      if(err)
        return console.log(err);
      console.log('DB Created successfully');

      setTimeout(function(){
        var qstring='CREATE TABLE mydb.table1 '+
        '(id INT NOT NULL,name VARCHAR(45)'+
        ' NULL,PRIMARY KEY (id));'
        connection.query(qstring,function(err){
          if(err)
            return console.log(err);
          console.log('table created successfully');

          setTimeout(function(){
            var qstring="INSERT INTO mydb.table1 (`id`, `name`) VALUES ('1', 'abc'),('2', 'bcd'),('3','cde')"
            connection.query(qstring,function(err){
              if(err)
                return console.log(err);
              console.log('Rows added successfully');

              setTimeout(function(){
                var query = connection.query('SELECT * FROM mydb.table1');

                query.on('error', function(err) {
                  throw err;
                });

                query.on('fields', function(fields) {
                  console.log(fields);
                });

                query.on('result', function(row) {
                  console.log(row);
                });
              },2000);
            });
          },2000);
        });
      },2000);
    })
  },2000);
});

所以我想这就是你想要的。

【讨论】:

  • 谢谢,但你能帮我更多吗?我还是真的被困住了。如果我运行您的代码,我无法在 localhost:3306 上打开它,页面将不会加载。如何使用此代码制作数据库?
  • 当我运行代码时,我得到这个错误:{ [Error: connect ECONNREFUSED 127.0.0.1:3306] code: 'ECONNREFUSED', errno: 'ECONNREFUSED', syscall: 'connect', address: '127.0.0.1', port: 3306, fatal: true }
  • 好的,我把正确的主机放在了,现在错误消失了,但是出现了新的错误兄弟:{ [Error: connect ETIMEDOUT] errorno: 'ETIMEDOUT', code: 'ETIMEDOUT', syscall: 'connect', fatal: true } Process finished with exit code 0
  • 更改你的mysql的用户名和密码
  • 创建一个远程存储库并将我添加到那里!
猜你喜欢
  • 2021-11-04
  • 2011-09-13
  • 2014-07-27
  • 1970-01-01
  • 2016-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多