Giao dịch mysql của NodeJS

Đôi khi tôi cũng có thể yêu cầu bạn cài đặt phiên bản mới nhất từ ​​Github để kiểm tra xem bản sửa lỗi có hoạt động không. Trong trường hợp này, xin vui lòng làm

$ npm install mysqljs/mysql

Giới thiệu

Đây là một nút. trình điều khiển js cho mysql. Nó được viết bằng JavaScript, không yêu cầu biên dịch và được MIT cấp phép 100%

Đây là một ví dụ về cách sử dụng nó

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();

Từ ví dụ này, bạn có thể học được những điều sau

  • Mọi phương thức bạn gọi trên một kết nối đều được xếp hàng và thực hiện theo trình tự
  • Đóng kết nối được thực hiện bằng cách sử dụng
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    5 để đảm bảo tất cả các truy vấn còn lại được thực hiện trước khi gửi gói thoát đến máy chủ mysql

người đóng góp

Cảm ơn những người đã đóng góp mã cho mô-đun này, xem trang Người đóng góp GitHub

Ngoài ra, tôi muốn cảm ơn những người sau đây

  • Andrey Hristov (Oracle) - vì đã giúp tôi giải đáp các thắc mắc về giao thức
  • Ulf Wendel (Oracle) - vì đã giúp tôi giải đáp các thắc mắc về giao thức

nhà tài trợ

Các công ty sau đây đã hỗ trợ tài chính cho dự án này, cho phép tôi dành nhiều thời gian hơn cho nó (sắp xếp theo thời gian đóng góp)

  • Transloadit (công ty khởi nghiệp của tôi, chúng tôi thực hiện tải lên tệp và mã hóa video dưới dạng dịch vụ, hãy xem thử)
  • vui vẻ
  • xe đạp màu hồng. com
  • Holiday Extras (họ đang tuyển dụng)
  • Newscope (họ đang tuyển dụng)

Cộng đồng

Nếu bạn muốn thảo luận về mô-đun này hoặc đặt câu hỏi về mô-đun này, vui lòng sử dụng một trong các cách sau

  • Danh sách gửi thư. https. //các nhóm. Google. com/diễn đàn/#. diễn đàn/nút-mysql
  • Kênh IRC. #nút. js (trên freenode. net, tôi chú ý đến bất kỳ tin nhắn nào kể cả thuật ngữ
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    6)

Thiết lập kết nối

Cách được khuyến nghị để thiết lập kết nối là

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});

Tuy nhiên, một kết nối cũng có thể được thiết lập hoàn toàn bằng cách gọi một truy vấn

var mysql      = require('mysql');
var connection = mysql.createConnection(...);

connection.query('SELECT 1', function (error, results, fields) {
  if (error) throw error;
  // connected!
});

Tùy thuộc vào cách bạn muốn xử lý lỗi của mình, một trong hai phương pháp có thể phù hợp. Bất kỳ loại lỗi kết nối nào (bắt tay hoặc mạng) đều được coi là lỗi nghiêm trọng, hãy xem phần Xử lý lỗi để biết thêm thông tin

tùy chọn kết nối

Khi thiết lập kết nối, bạn có thể đặt các tùy chọn sau

  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    7. Tên máy chủ của cơ sở dữ liệu bạn đang kết nối với. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    8)
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    9. Số cổng để kết nối với. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        // DO NOT DO THIS
        // set up your ca correctly to trust the connection
        rejectUnauthorized: false
      }
    });
    0)
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        // DO NOT DO THIS
        // set up your ca correctly to trust the connection
        rejectUnauthorized: false
      }
    });
    1. Địa chỉ IP nguồn để sử dụng cho kết nối TCP. (Không bắt buộc)
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        // DO NOT DO THIS
        // set up your ca correctly to trust the connection
        rejectUnauthorized: false
      }
    });
    2. Đường dẫn đến một ổ cắm tên miền unix để kết nối với. Khi sử dụng
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    7 và
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    9 được bỏ qua
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        // DO NOT DO THIS
        // set up your ca correctly to trust the connection
        rejectUnauthorized: false
      }
    });
    5. Người dùng MySQL để xác thực là
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        // DO NOT DO THIS
        // set up your ca correctly to trust the connection
        rejectUnauthorized: false
      }
    });
    6. Mật khẩu của người dùng MySQL đó
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        // DO NOT DO THIS
        // set up your ca correctly to trust the connection
        rejectUnauthorized: false
      }
    });
    7. Tên của cơ sở dữ liệu sẽ sử dụng cho kết nối này (Tùy chọn)
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        // DO NOT DO THIS
        // set up your ca correctly to trust the connection
        rejectUnauthorized: false
      }
    });
    8. Bộ ký tự cho kết nối. Điều này được gọi là "đối chiếu" ở cấp độ SQL của MySQL (như
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        // DO NOT DO THIS
        // set up your ca correctly to trust the connection
        rejectUnauthorized: false
      }
    });
    9). Nếu một bộ ký tự cấp SQL được chỉ định (như
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    90) thì đối chiếu mặc định cho bộ ký tự đó được sử dụng. (Mặc định.
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    91)
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    92. Múi giờ được cấu hình trên máy chủ MySQL. Điều này được sử dụng để nhập các giá trị ngày/giờ của máy chủ truyền vào đối tượng JavaScript
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    93 và ngược lại. Đây có thể là
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    94,
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    95 hoặc phần bù ở dạng
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    96 hoặc
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    97. (Mặc định.
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    94)
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    99. Một phần nghìn giây trước khi hết thời gian chờ trong quá trình kết nối ban đầu với máy chủ MySQL. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    90)
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    91. Xâu chuỗi các đối tượng thay vì chuyển đổi thành giá trị. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    92)
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    93. Cho phép kết nối với các phiên bản MySQL yêu cầu phương thức xác thực cũ (không an toàn). (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    92)
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    95. Xác định xem các giá trị cột có nên được chuyển đổi thành các loại JavaScript gốc hay không. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    96)
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    97. Chức năng định dạng truy vấn tùy chỉnh. Xem Định dạng tùy chỉnh
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    98. Khi xử lý các số lớn (cột LỚN và DECIMAL) trong cơ sở dữ liệu, bạn nên bật tùy chọn này (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    92)
  • $ npm install mysqljs/mysql
    00. Kích hoạt cả
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    98 và
    $ npm install mysqljs/mysql
    00 buộc các số lớn (cột LỚN và DECIMAL) luôn được trả về dưới dạng đối tượng Chuỗi JavaScript (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    92). Kích hoạt
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    98 nhưng tắt
    $ npm install mysqljs/mysql
    00 sẽ chỉ trả về các số lớn dưới dạng đối tượng Chuỗi khi chúng không thể được biểu diễn chính xác bằng [đối tượng Số JavaScript] (https. //tc39. es/ecma262/#sec-ecmascript-language-types-number-type) (xảy ra khi chúng vượt quá phạm vi [-2^53, +2^53]), nếu không chúng sẽ được trả về dưới dạng đối tượng Số. Tùy chọn này bị bỏ qua nếu
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    98 bị tắt
  • $ npm install mysqljs/mysql
    07. Buộc các loại ngày (TIMESTAMP, DATETIME, DATE) được trả về dưới dạng chuỗi thay vì thổi phồng thành đối tượng Ngày JavaScript. Có thể là
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    96/
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    92 hoặc một mảng tên loại để giữ dưới dạng chuỗi. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    92)
  • $ npm install mysqljs/mysql
    11. In chi tiết giao thức tới thiết bị xuất chuẩn. Có thể là
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    96/
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    92 hoặc một mảng tên loại gói cần được in. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    92)
  • $ npm install mysqljs/mysql
    15. Tạo dấu vết ngăn xếp trên
    $ npm install mysqljs/mysql
    16 để bao gồm trang gọi lối vào thư viện ("dấu vết ngăn xếp dài"). Hình phạt hiệu suất nhẹ cho hầu hết các cuộc gọi. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    96)
  • $ npm install mysqljs/mysql
    18. Cho phép
    $ npm install mysqljs/mysql
    19 sử dụng công cụ sửa đổi
    $ npm install mysqljs/mysql
    20. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    96)
  • $ npm install mysqljs/mysql
    22. Cho phép nhiều câu lệnh mysql trên mỗi truy vấn. Hãy cẩn thận với điều này, nó có thể làm tăng phạm vi của các cuộc tấn công SQL injection. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    92)
  • $ npm install mysqljs/mysql
    24. Danh sách các cờ kết nối để sử dụng ngoài những cờ mặc định. Cũng có thể đưa vào danh sách đen những cái mặc định. Để biết thêm thông tin, hãy kiểm tra Cờ kết nối
  • $ npm install mysqljs/mysql
    25. đối tượng có tham số ssl hoặc chuỗi chứa tên của hồ sơ ssl. Xem các tùy chọn SSL

Ngoài việc chuyển các tùy chọn này dưới dạng đối tượng, bạn cũng có thể sử dụng chuỗi url. Ví dụ

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
5

Ghi chú. Các giá trị truy vấn trước tiên được cố gắng phân tích cú pháp dưới dạng JSON và nếu điều đó không được coi là các chuỗi văn bản gốc

tùy chọn SSL

Tùy chọn

$ npm install mysqljs/mysql
25 trong các tùy chọn kết nối nhận một chuỗi hoặc một đối tượng. Khi được cung cấp một chuỗi, nó sẽ sử dụng một trong các cấu hình SSL được xác định trước bao gồm. Các hồ sơ sau đây được bao gồm

  • $ npm install mysqljs/mysql
    27. hồ sơ này dùng để kết nối với máy chủ Amazon RDS và chứa các chứng chỉ từ https. //rds. amazonaws. com/doc/rds-ssl-ca-cert. pem và https. //s3. amazonaws. com/rds-downloads/rds-combined-ca-bundle. pem

Khi kết nối với các máy chủ khác, bạn sẽ cần cung cấp cho đối tượng bất kỳ tùy chọn nào sau đây

  • $ npm install mysqljs/mysql
    28. (Các) chứng chỉ đáng tin cậy thay vì những cái Node. js được cấu hình để tin tưởng. Điều này đề cập đến giá trị của (các) chứng chỉ chứ không phải tên tệp của (các) chứng chỉ. Điều này được thông qua dưới dạng tùy chọn
    $ npm install mysqljs/mysql
    28 cho lệnh gọi
    $ npm install mysqljs/mysql
    30 cơ bản (hoặc cơ sở
    $ npm install mysqljs/mysql
    31 nếu sử dụng Nút. js dưới 0. 12)
  • $ npm install mysqljs/mysql
    32. Chứng chỉ ứng dụng khách sẽ sử dụng trong quá trình bắt tay SSL. Điều này được thông qua dưới dạng tùy chọn
    $ npm install mysqljs/mysql
    32 cho lệnh gọi
    $ npm install mysqljs/mysql
    30 cơ bản (hoặc
    $ npm install mysqljs/mysql
    31 cơ bản nếu sử dụng Nút. js dưới 0. 12)
  • $ npm install mysqljs/mysql
    36. Các mật mã được sử dụng để sử dụng trong quá trình bắt tay SSL thay vì mật mã mặc định cho Node. js. Điều này được thông qua dưới dạng tùy chọn
    $ npm install mysqljs/mysql
    36 cho cuộc gọi
    $ npm install mysqljs/mysql
    30 (hoặc cơ sở
    $ npm install mysqljs/mysql
    31 nếu sử dụng Nút. js dưới 0. 12)
  • $ npm install mysqljs/mysql
    40. Điều này được thông qua dưới dạng tùy chọn
    $ npm install mysqljs/mysql
    40 cho cuộc gọi
    $ npm install mysqljs/mysql
    30 cơ bản
  • $ npm install mysqljs/mysql
    43. Điều này được thông qua dưới dạng tùy chọn
    $ npm install mysqljs/mysql
    43 cho cuộc gọi
    $ npm install mysqljs/mysql
    30 cơ bản
  • $ npm install mysqljs/mysql
    46. Điều này được thông qua dưới dạng tùy chọn
    $ npm install mysqljs/mysql
    46 cho cuộc gọi
    $ npm install mysqljs/mysql
    30 (hoặc cơ sở
    $ npm install mysqljs/mysql
    31 nếu sử dụng Nút. js dưới 0. 12)
  • $ npm install mysqljs/mysql
    50. Điều này được thông qua dưới dạng tùy chọn
    $ npm install mysqljs/mysql
    50 cho cuộc gọi
    $ npm install mysqljs/mysql
    30 (hoặc cơ sở
    $ npm install mysqljs/mysql
    31 nếu sử dụng Nút. js dưới 0. 12)
  • $ npm install mysqljs/mysql
    54. Chứng chỉ máy chủ được xác minh dựa trên danh sách các CA được cung cấp và tên máy chủ và nếu không tìm thấy kết quả khớp, kết nối SSL sẽ không thành công. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    96)

Đây là một ví dụ đơn giản

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});

Bạn cũng có thể kết nối với máy chủ MySQL mà không cần cung cấp đúng CA thích hợp để tin cậy. bạn không nên làm điều này

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    // DO NOT DO THIS
    // set up your ca correctly to trust the connection
    rejectUnauthorized: false
  }
});

Cờ kết nối

Nếu vì bất kỳ lý do gì, bạn muốn thay đổi các cờ kết nối mặc định, bạn có thể sử dụng tùy chọn kết nối

$ npm install mysqljs/mysql
24. Chuyển một chuỗi có danh sách các mục được phân tách bằng dấu phẩy để thêm vào các cờ mặc định. Nếu bạn không muốn sử dụng cờ mặc định, hãy thêm cờ có dấu trừ vào trước. Để thêm một cờ không có trong danh sách mặc định, chỉ cần viết tên cờ hoặc thêm tiền tố đó bằng dấu cộng (không phân biệt chữ hoa chữ thường)

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
9

Các cờ sau đây có sẵn

  • $ npm install mysqljs/mysql
    57 - Kích hoạt tính năng nén giao thức. Tính năng này hiện không được hỗ trợ bởi Node. js nên không bật được. (Mặc định tắt)
  • $ npm install mysqljs/mysql
    58 - Khả năng chỉ định cơ sở dữ liệu khi kết nối. (Mặc định bật)
  • $ npm install mysqljs/mysql
    59 - Gửi các hàng đã tìm thấy thay vì các hàng bị ảnh hưởng dưới dạng
    $ npm install mysqljs/mysql
    60. (Mặc định bật)
  • $ npm install mysqljs/mysql
    61 - Không phát hành SIGPIPE nếu lỗi mạng. Cờ này không có hiệu lực trên Nút này. triển khai js. (Mặc định bật)
  • $ npm install mysqljs/mysql
    62 - Để trình phân tích cú pháp bỏ qua khoảng trắng trước
    $ npm install mysqljs/mysql
    63 trong các truy vấn. (Mặc định bật)
  • $ npm install mysqljs/mysql
    64 - Cho máy chủ MySQL biết đây là ứng dụng khách "tương tác". Điều này sẽ sử dụng thời gian chờ tương tác trên máy chủ MySQL và báo cáo là tương tác trong danh sách quy trình. (Mặc định tắt)
  • $ npm install mysqljs/mysql
    65 - Có thể sử dụng
    $ npm install mysqljs/mysql
    66. Cờ này được kiểm soát bởi tùy chọn kết nối
    $ npm install mysqljs/mysql
    18. (Mặc định bật)
  • $ npm install mysqljs/mysql
    68 - Cờ dài hơn trong Giao thức. CộtĐịnh nghĩa320. (Mặc định bật)
  • $ npm install mysqljs/mysql
    69 - Sử dụng phiên bản cải tiến của Xác thực mật khẩu cũ. (Mặc định bật)
  • $ npm install mysqljs/mysql
    70 - Có thể xử lý nhiều tập kết quả cho các truy vấn. (Mặc định bật)
  • $ npm install mysqljs/mysql
    71 - Khách hàng có thể gửi nhiều câu lệnh cho mỗi truy vấn hoặc chuẩn bị câu lệnh (cách nhau bởi
    $ npm install mysqljs/mysql
    72). Cờ này được điều khiển bởi tùy chọn kết nối
    $ npm install mysqljs/mysql
    22. (Mặc định tắt)
  • $ npm install mysqljs/mysql
    74
  • $ npm install mysqljs/mysql
    75 Xử lý đặc biệt hành vi ODBC. Cờ này không có hiệu lực trên Nút này. triển khai js. (Mặc định bật)
  • $ npm install mysqljs/mysql
    76 - Sử dụng cơ chế xác thực plugin khi kết nối với máy chủ MySQL. Tính năng này hiện không được hỗ trợ bởi Node. js nên không bật được. (Mặc định tắt)
  • $ npm install mysqljs/mysql
    77 - Sử dụng 4. 1 giao thức. (Mặc định bật)
  • $ npm install mysqljs/mysql
    78 - Có thể xử lý nhiều tập kết quả để thực thi. (Mặc định bật)
  • $ npm install mysqljs/mysql
    79 - Điều này dành riêng cho máy khách C và không ảnh hưởng đến Nút này. triển khai js. (Mặc định tắt)
  • $ npm install mysqljs/mysql
    80 - Lá cờ cũ của 4 người. 1 giao thức. (Mặc định bật)
  • $ npm install mysqljs/mysql
    81 - Hỗ trợ bản địa 4. 1 xác thực. (Mặc định bật)
  • $ npm install mysqljs/mysql
    82 - Sử dụng SSL sau khi bắt tay để mã hóa dữ liệu khi vận chuyển. Tính năng này được kiểm soát thông qua tùy chọn kết nối
    $ npm install mysqljs/mysql
    25, vì vậy cờ không có tác dụng. (Mặc định tắt)
  • $ npm install mysqljs/mysql
    84 - Xác minh chứng chỉ máy chủ trong quá trình thiết lập SSL. Tính năng này được kiểm soát thông qua tùy chọn kết nối
    $ npm install mysqljs/mysql
    85, vì vậy cờ không có tác dụng. (Mặc định tắt)
  • $ npm install mysqljs/mysql
    86 - Yêu cầu cờ trạng thái giao dịch. (Mặc định bật)

Chấm dứt kết nối

Có hai cách để kết thúc kết nối. Chấm dứt kết nối một cách duyên dáng được thực hiện bằng cách gọi phương thức

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
5

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
9

Điều này sẽ đảm bảo rằng tất cả các truy vấn đã xử lý trước đó vẫn được thực thi trước khi gửi gói

$ npm install mysqljs/mysql
88 đến máy chủ MySQL. Nếu một lỗi nghiêm trọng xảy ra trước khi gói
$ npm install mysqljs/mysql
88 có thể được gửi, một đối số
$ npm install mysqljs/mysql
90 sẽ được cung cấp cho cuộc gọi lại, nhưng kết nối sẽ bị chấm dứt bất kể điều đó

Một cách khác để kết thúc kết nối là gọi phương thức

$ npm install mysqljs/mysql
91. Điều này sẽ gây ra sự chấm dứt ngay lập tức của ổ cắm bên dưới. Ngoài ra,
$ npm install mysqljs/mysql
91 đảm bảo rằng sẽ không có thêm sự kiện hoặc cuộc gọi lại nào được kích hoạt cho kết nối

$ npm install mysqljs/mysql
0

Không giống như

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
5, phương thức
$ npm install mysqljs/mysql
91 không nhận đối số gọi lại

kết nối tổng hợp

Thay vì tạo và quản lý từng kết nối một, mô-đun này cũng cung cấp tính năng tổng hợp kết nối tích hợp bằng cách sử dụng

$ npm install mysqljs/mysql
95. Đọc thêm về tổng hợp kết nối

Tạo một nhóm và sử dụng nó trực tiếp

$ npm install mysqljs/mysql
1

Đây là lối tắt cho luồng mã

$ npm install mysqljs/mysql
96 ->
$ npm install mysqljs/mysql
97 ->
$ npm install mysqljs/mysql
98. Sử dụng
$ npm install mysqljs/mysql
96 rất hữu ích để chia sẻ trạng thái kết nối cho các truy vấn tiếp theo. Điều này là do hai cuộc gọi đến
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
00 có thể sử dụng hai kết nối khác nhau và chạy song song. Đây là cấu trúc cơ bản

$ npm install mysqljs/mysql
2

Nếu bạn muốn đóng kết nối và xóa nó khỏi nhóm, hãy sử dụng

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
01 để thay thế. Nhóm sẽ tạo một kết nối mới vào lần tiếp theo khi cần thiết

Các kết nối được tạo ra một cách lười biếng bởi nhóm. Nếu bạn định cấu hình nhóm để cho phép tối đa 100 kết nối, nhưng chỉ sử dụng đồng thời 5 kết nối, thì sẽ chỉ có 5 kết nối được thực hiện. Các kết nối cũng được thực hiện theo kiểu vòng tròn, với các kết nối được lấy từ đỉnh của nhóm và quay trở lại đáy

Khi một kết nối trước đó được truy xuất từ ​​nhóm, một gói ping sẽ được gửi đến máy chủ để kiểm tra xem kết nối có còn tốt không

tùy chọn hồ bơi

Nhóm chấp nhận tất cả các tùy chọn giống như kết nối. Khi tạo một kết nối mới, các tùy chọn chỉ được chuyển đến hàm tạo kết nối. Ngoài các tùy chọn đó, nhóm chấp nhận một vài tính năng bổ sung

  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    02. Một phần nghìn giây trước khi hết thời gian chờ trong quá trình thu nhận kết nối. Điều này hơi khác so với
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    99, bởi vì việc có được kết nối nhóm không phải lúc nào cũng liên quan đến việc tạo kết nối. Nếu yêu cầu kết nối được xếp hàng đợi, thời gian yêu cầu dành cho hàng đợi không được tính vào thời gian chờ này. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    90)
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    05. Xác định hành động của nhóm khi không có kết nối nào và đã đạt đến giới hạn. Nếu
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    96, nhóm sẽ xếp hàng yêu cầu kết nối và gọi nó khi có sẵn. Nếu
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    92, pool sẽ ngay lập tức gọi lại với một lỗi. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    96)
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    09. Số lượng kết nối tối đa để tạo cùng một lúc. (Mặc định.
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    10)
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    11. Số lượng yêu cầu kết nối tối đa mà nhóm sẽ xếp hàng trước khi trả về lỗi từ
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    12. Nếu được đặt thành
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    13, không có giới hạn về số lượng yêu cầu kết nối được xếp hàng đợi. (Mặc định.
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    13)

sự kiện bể bơi

có được, thu được

Nhóm sẽ phát ra một sự kiện

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
15 khi có được kết nối từ nhóm. Điều này được gọi sau khi tất cả hoạt động thu thập đã được thực hiện trên kết nối, ngay trước khi kết nối được chuyển đến lệnh gọi lại của mã thu thập

$ npm install mysqljs/mysql
3

sự liên quan

Nhóm sẽ phát ra một sự kiện

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
16 khi một kết nối mới được tạo trong nhóm. Nếu bạn cần đặt các biến phiên trên kết nối trước khi nó được sử dụng, bạn có thể nghe sự kiện
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
16

$ npm install mysqljs/mysql
4

hàng đợi

Nhóm sẽ phát ra một sự kiện

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
18 khi một cuộc gọi lại đã được xếp hàng đợi để chờ kết nối khả dụng

$ npm install mysqljs/mysql
5

phóng thích

Nhóm sẽ phát ra sự kiện

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
19 khi kết nối được giải phóng trở lại nhóm. Điều này được gọi sau khi tất cả hoạt động phát hành đã được thực hiện trên kết nối, vì vậy kết nối sẽ được liệt kê là miễn phí tại thời điểm diễn ra sự kiện

$ npm install mysqljs/mysql
6

Đóng tất cả các kết nối trong một nhóm

Khi bạn sử dụng xong nhóm, bạn phải kết thúc tất cả các kết nối hoặc Nút. vòng lặp sự kiện js sẽ vẫn hoạt động cho đến khi các kết nối bị đóng bởi máy chủ MySQL. Điều này thường được thực hiện nếu nhóm được sử dụng trong tập lệnh hoặc khi cố gắng tắt máy chủ một cách duyên dáng. Để kết thúc tất cả các kết nối trong nhóm, hãy sử dụng phương pháp

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
20 trên nhóm

$ npm install mysqljs/mysql
7

Phương thức

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
20 có một cuộc gọi lại tùy chọn mà bạn có thể sử dụng để biết khi nào tất cả các kết nối kết thúc

Khi

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
22 được gọi,
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
23 và các thao tác khác không thể thực hiện được nữa. Đợi cho đến khi tất cả các kết nối trong nhóm được giải phóng trước khi gọi
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
22. Nếu bạn dùng cách gõ tắt
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
25, thay cho
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
23 →
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
27 →
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
28, đợi chạy xong

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
22 cuộc gọi
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
30 trên mọi kết nối đang hoạt động trong nhóm. Điều này xếp hàng một gói
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
31 trên kết nối và đặt cờ để ngăn
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
23 tạo kết nối mới. Tất cả các lệnh/truy vấn đang thực hiện sẽ hoàn tất, nhưng các lệnh mới sẽ không thực thi

cụm hồ bơi

PoolCluster cung cấp kết nối nhiều máy chủ. (nhóm & thử lại & bộ chọn)

$ npm install mysqljs/mysql
8

Tùy chọn PoolCluster

  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    33. Nếu
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    96,
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    35 sẽ cố gắng kết nối lại khi kết nối không thành công. (Mặc định.
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    96)
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    37. Nếu kết nối không thành công, nút
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    38 sẽ tăng. Khi
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    38 lớn hơn
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    37, hãy xóa một nút trong
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    35. (Mặc định.
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    42)
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    43. Nếu kết nối không thành công, hãy chỉ định số mili giây trước khi thử kết nối khác sẽ được thực hiện. Nếu được đặt thành
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    13, thì nút đó sẽ bị xóa và không bao giờ được sử dụng lại. (Mặc định.
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    13)
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    46. Bộ chọn mặc định. (Mặc định.
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    47)
    • var mysql      = require('mysql');
      var connection = mysql.createConnection({
        host     : 'localhost',
        user     : 'me',
        password : 'secret',
        database : 'my_db'
      });
      
      connection.connect();
      
      connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
        if (error) throw error;
        console.log('The solution is: ', results[0].solution);
      });
      
      connection.end();
      47. Chọn một luân phiên. (Vòng tròn tính điểm)
    • var mysql      = require('mysql');
      var connection = mysql.createConnection({
        host     : 'localhost',
        user     : 'me',
        password : 'secret',
        database : 'my_db'
      });
      
      connection.connect();
      
      connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
        if (error) throw error;
        console.log('The solution is: ', results[0].solution);
      });
      
      connection.end();
      49. Chọn nút theo chức năng ngẫu nhiên
    • var mysql      = require('mysql');
      var connection = mysql.createConnection({
        host     : 'localhost',
        user     : 'me',
        password : 'secret',
        database : 'my_db'
      });
      
      connection.connect();
      
      connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
        if (error) throw error;
        console.log('The solution is: ', results[0].solution);
      });
      
      connection.end();
      50. Chọn nút đầu tiên có sẵn vô điều kiện

$ npm install mysqljs/mysql
9

Chuyển đổi người dùng và thay đổi trạng thái kết nối

MySQL cung cấp lệnh changeUser cho phép bạn thay đổi người dùng hiện tại và các khía cạnh khác của kết nối mà không cần tắt ổ cắm bên dưới

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
0

Các tùy chọn có sẵn cho tính năng này là

  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        // DO NOT DO THIS
        // set up your ca correctly to trust the connection
        rejectUnauthorized: false
      }
    });
    5. Tên của người dùng mới (mặc định là tên trước đó)
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        // DO NOT DO THIS
        // set up your ca correctly to trust the connection
        rejectUnauthorized: false
      }
    });
    6. Mật khẩu của người dùng mới (mặc định là mật khẩu trước đó)
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        // DO NOT DO THIS
        // set up your ca correctly to trust the connection
        rejectUnauthorized: false
      }
    });
    8. Bộ ký tự mới (mặc định là bộ ký tự trước)
  • var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        // DO NOT DO THIS
        // set up your ca correctly to trust the connection
        rejectUnauthorized: false
      }
    });
    7. Cơ sở dữ liệu mới (mặc định là cơ sở dữ liệu trước đó)

Một tác dụng phụ đôi khi hữu ích của chức năng này là chức năng này cũng đặt lại bất kỳ trạng thái kết nối nào (biến, giao dịch, v.v. )

Các lỗi gặp phải trong quá trình vận hành này được mô-đun này coi là lỗi kết nối nghiêm trọng

Máy chủ ngắt kết nối

Bạn có thể mất kết nối với máy chủ MySQL do sự cố mạng, máy chủ hết thời gian, máy chủ được khởi động lại hoặc gặp sự cố. Tất cả những sự kiện này được coi là lỗi nghiêm trọng và sẽ có

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
55. Xem phần Xử lý lỗi để biết thêm thông tin

Kết nối lại một kết nối được thực hiện bằng cách thiết lập một kết nối mới. Sau khi kết thúc, một đối tượng kết nối hiện tại không thể được kết nối lại theo thiết kế

Với Pool, các kết nối bị ngắt kết nối sẽ bị xóa khỏi nhóm để giải phóng dung lượng cho một kết nối mới được tạo trong lệnh gọi getConnection tiếp theo

Với PoolCluster, các kết nối bị ngắt kết nối sẽ được tính là lỗi đối với nút liên quan, tăng mã lỗi cho nút đó. Khi có hơn 137 lỗi trên một nút nhất định, nút đó sẽ bị xóa khỏi cụm. Khi điều này xảy ra, PoolCluster có thể phát ra lỗi

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
57 nếu không còn bất kỳ nút nào khớp với mẫu. Cấu hình
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
43 có thể được đặt để khôi phục các nút ngoại tuyến sau một thời gian chờ nhất định

Thực hiện truy vấn

Cách cơ bản nhất để thực hiện một truy vấn là gọi phương thức

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
59 trên một đối tượng (chẳng hạn như đối tượng
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
60,
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
61 hoặc
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
62)

Dạng đơn giản nhất của

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
59 là
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
64, trong đó chuỗi SQL là đối số đầu tiên và đối số thứ hai là hàm gọi lại

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
1

Biểu mẫu thứ hai

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
65 xuất hiện khi sử dụng các giá trị giữ chỗ (xem các giá trị truy vấn thoát)

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
2

Biểu mẫu thứ ba

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
66 xuất hiện khi sử dụng các tùy chọn nâng cao khác nhau trên truy vấn, như thoát các giá trị truy vấn, nối với các tên cột chồng chéo, hết thời gian chờ và truyền kiểu

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
3

Lưu ý rằng có thể sử dụng kết hợp biểu mẫu thứ hai và thứ ba khi các giá trị giữ chỗ được chuyển dưới dạng đối số chứ không phải trong đối tượng tùy chọn. Đối số

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
67 sẽ ghi đè lên
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
67 trong đối tượng tùy chọn

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
4

Nếu truy vấn chỉ có một ký tự thay thế duy nhất (

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
69) và giá trị không phải là
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
70,
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
71 hoặc một mảng, thì nó có thể được chuyển trực tiếp dưới dạng đối số thứ hai cho
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
72

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
5

Thoát các giá trị truy vấn

Thận trọng Các phương pháp thoát giá trị này chỉ hoạt động khi chế độ SQL NO_BACKSLASH_ESCAPES bị tắt (là trạng thái mặc định cho máy chủ MySQL)

Thận trọng Thư viện này thực hiện thoát phía máy khách, vì đây là thư viện để tạo chuỗi SQL ở phía máy khách. Cú pháp của các hàm như

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
73 có thể trông giống như một câu lệnh đã chuẩn bị, nhưng không phải vậy và các quy tắc thoát từ mô-đun này được sử dụng để tạo ra một chuỗi SQL kết quả. Mục đích của việc thoát đầu vào là để tránh các cuộc tấn công SQL Injection. Để hỗ trợ hỗ trợ nâng cao như định dạng
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
74 và
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
75, mô-đun này sẽ thoát ra dựa trên hình dạng của giá trị được truyền trong JavaScript và chuỗi thoát kết quả có thể nhiều hơn một giá trị. Khi đầu vào của người dùng có cấu trúc được cung cấp dưới dạng giá trị để thoát, cần cẩn thận để xác thực hình dạng của đầu vào để xác thực đầu ra sẽ như mong đợi

Để tránh các cuộc tấn công SQL Injection, bạn phải luôn thoát mọi dữ liệu do người dùng cung cấp trước khi sử dụng dữ liệu đó bên trong truy vấn SQL. Bạn có thể làm như vậy bằng cách sử dụng các phương pháp

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
76,
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
77 hoặc
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
78

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
6

Ngoài ra, bạn có thể sử dụng ký tự

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
69 làm trình giữ chỗ cho các giá trị mà bạn muốn thoát như thế này

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
7

Nhiều trình giữ chỗ được ánh xạ tới các giá trị theo thứ tự như đã thông qua. Ví dụ: trong truy vấn sau đây,

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
80 bằng với
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
81,
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
82 bằng với
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
83,
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
84 bằng với
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
85 và
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
86 sẽ là
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
87

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
8

Điều này trông tương tự như các câu lệnh đã chuẩn bị sẵn trong MySQL, tuy nhiên nó thực sự chỉ sử dụng cùng một phương thức

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
77 trong nội bộ

Thận trọng Điều này cũng khác với câu lệnh đã chuẩn bị ở chỗ tất cả

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
69 đều được thay thế, ngay cả những câu lệnh có trong chú thích và chuỗi

Các loại giá trị khác nhau được thoát khác nhau, đây là cách

  • Những con số không bị ảnh hưởng
  • Booleans được chuyển thành
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    96 /
    var connection = mysql.createConnection({
      host : 'localhost',
      ssl  : {
        ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
      }
    });
    92
  • Các đối tượng ngày được chuyển đổi thành chuỗi
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    92
  • Bộ đệm được chuyển đổi thành chuỗi hex, e. g.
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    93
  • Chuỗi được thoát an toàn
  • Mảng được biến thành danh sách, e. g.
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    94 biến thành
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    95
  • Các mảng lồng nhau được chuyển thành các danh sách được nhóm (đối với các phần chèn hàng loạt), e. g.
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    96 biến thành
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    97
  • Các đối tượng có phương thức
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    98 sẽ được gọi là
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    99 và giá trị trả về được sử dụng làm SQL thô
  • Các đối tượng được biến thành các cặp
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    00 cho mỗi thuộc tính có thể đếm được trên đối tượng. Nếu giá trị của thuộc tính là một hàm, nó sẽ bị bỏ qua;
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    71 /
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });
    
    connection.connect();
    
    connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    
    connection.end();
    70 được chuyển đổi thành
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    03
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    04 /
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    05 được giữ nguyên. MySQL không hỗ trợ những thứ này và việc cố gắng chèn chúng dưới dạng giá trị sẽ gây ra lỗi MySQL cho đến khi chúng triển khai hỗ trợ

Lối thoát này cho phép bạn làm những việc gọn gàng như thế này

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
9

Và phương pháp

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
98 cho phép bạn tạo các truy vấn phức tạp với các hàm

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
0

Để tạo các đối tượng bằng phương thức

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
98, phương thức
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
08 có thể được sử dụng. Điều này tạo ra một đối tượng sẽ không được chạm vào khi sử dụng trong trình giữ chỗ
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
69, hữu ích cho việc sử dụng các hàm làm giá trị động

Thận trọng Chuỗi được cung cấp cho

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
08 sẽ bỏ qua tất cả các hàm thoát khi được sử dụng, vì vậy hãy cẩn thận khi chuyển đầu vào chưa được xác thực

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
1

Nếu bạn cảm thấy cần thoát truy vấn một mình, bạn cũng có thể trực tiếp sử dụng chức năng thoát

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
2

Thoát định danh truy vấn

Nếu bạn không thể tin tưởng một mã định danh SQL (tên cơ sở dữ liệu/bảng/cột) vì nó được cung cấp bởi người dùng, bạn nên thoát nó bằng

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
11,
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
12 hoặc
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
13 như thế này

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
3

Nó cũng hỗ trợ thêm số nhận dạng đủ điều kiện. Nó sẽ thoát khỏi cả hai phần

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
4

Nếu bạn không muốn coi

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
14 là số nhận dạng đủ điều kiện, bạn có thể đặt đối số thứ hai thành
var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
96 để giữ chuỗi dưới dạng số nhận dạng theo nghĩa đen

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
5

Ngoài ra, bạn có thể sử dụng ký tự

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
16 làm trình giữ chỗ cho số nhận dạng mà bạn muốn thoát như thế này

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
6

Xin lưu ý rằng chuỗi ký tự cuối cùng này là chuỗi ký tự thử nghiệm và cú pháp có thể thay đổi

Khi bạn chuyển một Đối tượng cho

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
17 hoặc
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();
59, thì
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
19 được sử dụng để tránh SQL injection trong các khóa đối tượng

Đang chuẩn bị truy vấn

Bạn có thể sử dụng mysql. định dạng để chuẩn bị truy vấn có nhiều điểm chèn, sử dụng lối thoát thích hợp cho id và giá trị. Một ví dụ đơn giản về điều này sau đây

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
7

Sau đó, bạn có một truy vấn thoát, hợp lệ mà sau đó bạn có thể gửi đến cơ sở dữ liệu một cách an toàn. Điều này hữu ích nếu bạn đang tìm cách chuẩn bị truy vấn trước khi thực sự gửi nó đến cơ sở dữ liệu. như mysql. định dạng được hiển thị từ SqlString. định dạng bạn cũng có tùy chọn (nhưng không bắt buộc) để chuyển vào stringifyObject và múi giờ, cho phép bạn cung cấp phương tiện tùy chỉnh để biến đối tượng thành chuỗi, cũng như Ngày nhận biết theo vị trí/múi giờ cụ thể

định dạng tùy chỉnh

Nếu bạn muốn có một loại định dạng thoát truy vấn khác, bạn có thể sử dụng tùy chọn cấu hình kết nối để xác định hàm định dạng tùy chỉnh. Bạn có thể truy cập đối tượng kết nối nếu bạn muốn sử dụng

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
17 tích hợp sẵn hoặc bất kỳ chức năng kết nối nào khác

Đây là một ví dụ về cách thực hiện một định dạng khác

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
8

Lấy id của một hàng được chèn

Nếu bạn đang chèn một hàng vào một bảng có khóa chính tăng tự động, bạn có thể truy xuất id chèn như thế này

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
9

Khi xử lý các số lớn (vượt quá giới hạn độ chính xác của Số JavaScript), bạn nên cân nhắc bật tùy chọn

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
98 để có thể đọc id chèn dưới dạng chuỗi, nếu không nó sẽ báo lỗi

Tùy chọn này cũng được yêu cầu khi tìm nạp các số lớn từ cơ sở dữ liệu, nếu không, bạn sẽ nhận được các giá trị được làm tròn thành hàng trăm hoặc hàng nghìn do giới hạn độ chính xác

Lấy số hàng bị ảnh hưởng

Bạn có thể lấy số hàng bị ảnh hưởng từ câu lệnh chèn, cập nhật hoặc xóa

var mysql      = require('mysql');
var connection = mysql.createConnection(...);

connection.query('SELECT 1', function (error, results, fields) {
  if (error) throw error;
  // connected!
});
0

Lấy số hàng đã thay đổi

Bạn có thể lấy số hàng đã thay đổi từ câu lệnh cập nhật

"changedRows" khác với "affectedRows" ở chỗ nó không tính các hàng được cập nhật có giá trị không thay đổi

var mysql      = require('mysql');
var connection = mysql.createConnection(...);

connection.query('SELECT 1', function (error, results, fields) {
  if (error) throw error;
  // connected!
});
1

Lấy ID kết nối

Bạn có thể lấy ID kết nối MySQL ("ID luồng") của một kết nối nhất định bằng cách sử dụng thuộc tính

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
22

var mysql      = require('mysql');
var connection = mysql.createConnection(...);

connection.query('SELECT 1', function (error, results, fields) {
  if (error) throw error;
  // connected!
});
2

Thực hiện truy vấn song song

Giao thức MySQL là tuần tự, điều này có nghĩa là bạn cần nhiều kết nối để thực hiện song song các truy vấn. Bạn có thể sử dụng Nhóm để quản lý kết nối, một cách tiếp cận đơn giản là tạo một kết nối cho mỗi yêu cầu http đến

Truyền các hàng truy vấn

Đôi khi, bạn có thể muốn chọn số lượng lớn hàng và xử lý từng hàng khi nhận được. Điều này có thể được thực hiện như thế này

var mysql      = require('mysql');
var connection = mysql.createConnection(...);

connection.query('SELECT 1', function (error, results, fields) {
  if (error) throw error;
  // connected!
});
3

Xin lưu ý một vài điều về ví dụ trên

  • Thông thường, bạn sẽ muốn nhận một lượng hàng nhất định trước khi bắt đầu tăng tốc kết nối bằng cách sử dụng
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    23. Con số này sẽ phụ thuộc vào số lượng và kích thước hàng của bạn
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    23 /
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    25 hoạt động trên ổ cắm và trình phân tích cú pháp bên dưới. Bạn được đảm bảo rằng sẽ không có thêm sự kiện
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    26 nào kích hoạt sau khi gọi
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    23
  • Bạn KHÔNG ĐƯỢC cung cấp lệnh gọi lại cho phương thức
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    28 khi phát trực tuyến các hàng
  • Sự kiện
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    26 sẽ kích hoạt cho cả hai hàng cũng như các gói OK xác nhận thành công của truy vấn CHÈN/CẬP NHẬT
  • Điều rất quan trọng là không để kết quả bị tạm dừng quá lâu, nếu không bạn có thể gặp phải
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    30 Giới hạn thời gian cho việc này được xác định bởi cài đặt net_write_timeout trên máy chủ MySQL của bạn

Ngoài ra, bạn có thể muốn biết rằng hiện tại không thể phát trực tuyến các cột hàng riêng lẻ, chúng sẽ luôn được lưu vào bộ đệm hoàn toàn. Nếu bạn có trường hợp sử dụng tốt để truyền các trường lớn đến và từ MySQL, tôi rất muốn nhận được những suy nghĩ và đóng góp của bạn về vấn đề này

Kết quả đường ống với Luồng

Đối tượng truy vấn cung cấp một phương thức thuận tiện

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
31 bao bọc các sự kiện truy vấn thành một đối tượng Dòng có thể đọc được. Luồng này có thể dễ dàng được chuyển xuống hạ lưu và cung cấp tạm dừng/tiếp tục tự động, dựa trên tắc nghẽn hạ lưu và tùy chọn
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
32. Tham số
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
33 của luồng được đặt thành
var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
96 và không thể thay đổi (nếu bạn cần luồng byte, bạn sẽ cần sử dụng luồng chuyển đổi, như objstream chẳng hạn)

Ví dụ: kết quả truy vấn đường ống vào một luồng khác (với bộ đệm tối đa là 5 đối tượng) chỉ đơn giản là

var mysql      = require('mysql');
var connection = mysql.createConnection(...);

connection.query('SELECT 1', function (error, results, fields) {
  if (error) throw error;
  // connected!
});
4

Truy vấn nhiều câu lệnh

Hỗ trợ cho nhiều câu lệnh bị vô hiệu hóa vì lý do bảo mật (nó cho phép tấn công SQL injection nếu các giá trị không được thoát đúng cách). Để sử dụng tính năng này, bạn phải bật tính năng này cho kết nối của mình

var mysql      = require('mysql');
var connection = mysql.createConnection(...);

connection.query('SELECT 1', function (error, results, fields) {
  if (error) throw error;
  // connected!
});
5

Sau khi được bật, bạn có thể thực hiện nhiều truy vấn câu lệnh giống như bất kỳ truy vấn nào khác

var mysql      = require('mysql');
var connection = mysql.createConnection(...);

connection.query('SELECT 1', function (error, results, fields) {
  if (error) throw error;
  // connected!
});
6

Ngoài ra, bạn cũng có thể truyền kết quả của nhiều truy vấn câu lệnh

var mysql      = require('mysql');
var connection = mysql.createConnection(...);

connection.query('SELECT 1', function (error, results, fields) {
  if (error) throw error;
  // connected!
});
7

Nếu một trong các câu lệnh trong truy vấn của bạn gây ra lỗi, thì đối tượng Lỗi kết quả chứa thuộc tính

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
35 cho bạn biết câu lệnh nào đã gây ra lỗi đó. MySQL cũng sẽ ngừng thực hiện mọi câu lệnh còn lại khi xảy ra lỗi

Xin lưu ý rằng giao diện truyền trực tuyến nhiều truy vấn câu lệnh là thử nghiệm và tôi rất mong nhận được phản hồi về giao diện này

thủ tục lưu trữ

Bạn có thể gọi các thủ tục được lưu trữ từ các truy vấn của mình như với bất kỳ trình điều khiển mysql nào khác. Nếu thủ tục được lưu trữ tạo ra một số tập hợp kết quả, chúng sẽ được hiển thị cho bạn giống như kết quả cho nhiều truy vấn câu lệnh

Tham gia với các tên cột chồng chéo

Khi thực hiện phép nối, bạn có thể nhận được các tập hợp kết quả có tên cột trùng nhau

Theo mặc định, nút-mysql sẽ ghi đè lên các tên cột xung đột theo thứ tự các cột được nhận từ MySQL, khiến một số giá trị nhận được không khả dụng

Tuy nhiên, bạn cũng có thể chỉ định rằng bạn muốn các cột của mình được lồng bên dưới tên bảng như thế này

var mysql      = require('mysql');
var connection = mysql.createConnection(...);

connection.query('SELECT 1', function (error, results, fields) {
  if (error) throw error;
  // connected!
});
8

Hoặc sử dụng dấu tách chuỗi để hợp nhất kết quả của bạn

var mysql      = require('mysql');
var connection = mysql.createConnection(...);

connection.query('SELECT 1', function (error, results, fields) {
  if (error) throw error;
  // connected!
});
9

giao dịch

Hỗ trợ giao dịch đơn giản có sẵn ở cấp độ kết nối

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
50

Xin lưu ý rằng beginTransaction(), commit() và rollback() chỉ đơn giản là các hàm tiện lợi thực thi các lệnh START TRANSACTION, CAMIT và ROLLBACK tương ứng. Điều quan trọng là phải hiểu rằng nhiều lệnh trong MySQL có thể gây ra một cam kết ngầm định, như được mô tả trong tài liệu MySQL

Bình

Một gói ping có thể được gửi qua kết nối bằng phương thức

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
36. Phương pháp này sẽ gửi một gói ping đến máy chủ và khi máy chủ phản hồi, cuộc gọi lại sẽ kích hoạt. Nếu xảy ra lỗi, cuộc gọi lại sẽ kích hoạt với đối số lỗi

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
51

Hết giờ

Mọi hoạt động đều có tùy chọn thời gian chờ không hoạt động tùy chọn. Điều này cho phép bạn chỉ định thời gian chờ thích hợp cho các hoạt động. Điều quan trọng cần lưu ý là những thời gian chờ này không phải là một phần của giao thức MySQL và các hoạt động hết thời gian chờ thông qua máy khách. Điều này có nghĩa là khi hết thời gian chờ, kết nối xảy ra trên đó sẽ bị hủy và không thể thực hiện thêm thao tác nào nữa

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
52

xử lý lỗi

Mô-đun này đi kèm với cách tiếp cận nhất quán để xử lý lỗi mà bạn nên xem xét cẩn thận để viết các ứng dụng vững chắc

Hầu hết các lỗi được tạo bởi mô-đun này là các phiên bản của đối tượng Lỗi JavaScript. Ngoài ra, chúng thường đi kèm với hai thuộc tính bổ sung

  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    37. Chuỗi, chứa biểu tượng lỗi máy chủ MySQL nếu lỗi là lỗi máy chủ MySQL (e. g.
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    38), một Nút. js mã lỗi nếu đó là Nút. lỗi js (e. g.
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    39) hoặc mã lỗi nội bộ (e. g.
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    40)
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    41. Số, chứa số lỗi máy chủ MySQL. Chỉ được điền từ lỗi máy chủ MySQL
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    42. Boolean, cho biết liệu lỗi này có phải là thiết bị đầu cuối của đối tượng kết nối hay không. Nếu lỗi không phải do hoạt động của giao thức MySQL, thuộc tính này sẽ không được xác định
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    43. Chuỗi, chứa SQL đầy đủ của truy vấn không thành công. Điều này có thể hữu ích khi sử dụng giao diện cấp cao hơn như ORM đang tạo truy vấn
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    44. Chuỗi, chứa giá trị SQLSTATE gồm năm ký tự. Chỉ được điền từ lỗi máy chủ MySQL
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    45. Chuỗi, chứa chuỗi thông báo cung cấp mô tả bằng văn bản về lỗi. Chỉ được điền từ lỗi máy chủ MySQL

Lỗi nghiêm trọng được truyền đến tất cả các cuộc gọi lại đang chờ xử lý. Trong ví dụ bên dưới, một lỗi nghiêm trọng đã xảy ra khi cố gắng kết nối với một cổng bị chặn. Do đó, đối tượng lỗi được truyền đến cả hai cuộc gọi lại đang chờ xử lý

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
53

Tuy nhiên, các lỗi thông thường chỉ được ủy quyền cho cuộc gọi lại mà chúng thuộc về. Vì vậy, trong ví dụ bên dưới, chỉ cuộc gọi lại đầu tiên gặp lỗi, truy vấn thứ hai hoạt động như mong đợi

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
54

Cuối cùng nhưng không kém phần quan trọng. Nếu xảy ra lỗi nghiêm trọng và không có lệnh gọi lại đang chờ xử lý hoặc lỗi thông thường xảy ra mà không có lệnh gọi lại thuộc về nó, thì lỗi được phát ra dưới dạng sự kiện

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
46 trên đối tượng kết nối. Điều này được thể hiện trong ví dụ dưới đây

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
55

Ghi chú. Sự kiện

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
46 đặc biệt trong nút. Nếu chúng xảy ra mà không có trình nghe đính kèm, dấu vết ngăn xếp sẽ được in và quy trình của bạn bị hủy

tl;dr. Mô-đun này không muốn bạn đối phó với những thất bại thầm lặng. Bạn phải luôn cung cấp các cuộc gọi lại cho các cuộc gọi phương thức của mình. Nếu bạn muốn bỏ qua lời khuyên này và loại bỏ các lỗi chưa được xử lý, bạn có thể làm điều này

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
56

An toàn ngoại lệ

Mô-đun này là ngoại lệ an toàn. Điều đó có nghĩa là bạn có thể tiếp tục sử dụng nó, ngay cả khi một trong các chức năng gọi lại của bạn gây ra lỗi mà bạn đang gặp phải khi sử dụng 'uncaughtException' hoặc một tên miền

loại đúc

Để thuận tiện cho bạn, trình điều khiển này sẽ chuyển các loại mysql thành các loại JavaScript gốc theo mặc định. Hành vi mặc định có thể được thay đổi thông qua các tùy chọn Kết nối khác nhau. Các ánh xạ sau đây tồn tại

Con số

  • TINYINT
  • NHỎ
  • INT
  • TRUNG BÌNH
  • NĂM
  • TRÔI NỔI
  • KÉP
  • LỚN

Ngày

  • DẤU THỜI GIAN
  • NGÀY
  • NGÀY GIỜ

Đệm

  • TINYBLOB
  • VỪABLOB
  • LONGBLOB
  • BÃI
  • nhị phân
  • BIẾN THÂN
  • BIT (byte cuối cùng sẽ được lấp đầy bằng 0 bit nếu cần)

Sợi dây

Văn bản ghi chú trong bộ ký tự nhị phân được trả về dưới dạng

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
48, thay vì một chuỗi

  • CHAR
  • VARCHAR
  • TINYTEXT
  • TRUNG BÌNH
  • VĂN BẢN DÀI
  • CHỮ
  • ENUM
  • BỘ
  • DECIMAL (có thể vượt quá độ chính xác float)
  • THỜI GIAN (có thể được ánh xạ tới Ngày, nhưng ngày nào sẽ được đặt?)
  • HÌNH HỌC (không bao giờ sử dụng chúng, hãy liên lạc nếu bạn làm)

Không nên (và có thể biến mất/thay đổi trong tương lai) để tắt tính năng truyền kiểu, nhưng hiện tại bạn có thể làm như vậy trên cả hai kết nối

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
57

Hoặc ở cấp độ truy vấn

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
58

đúc loại tùy chỉnh

Bạn cũng có thể truyền một hàm và tự xử lý việc truyền kiểu. Bạn được cung cấp một số thông tin cột như cơ sở dữ liệu, bảng và tên cũng như loại và độ dài. Nếu bạn chỉ muốn áp dụng kiểu truyền tùy chỉnh cho một loại cụ thể, bạn có thể thực hiện việc đó và sau đó chuyển về mặc định

Hàm được cung cấp hai đối số

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
49 và
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
50 và dự kiến ​​sẽ trả về giá trị cho trường đã cho bằng cách gọi các hàm trình phân tích cú pháp thông qua đối tượng
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
49

Đối số

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
49 là một đối tượng
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
53 và chứa dữ liệu về trường cần được phân tích cú pháp. Sau đây là một số thuộc tính trên đối tượng
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
53

  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    55 - một chuỗi cơ sở dữ liệu mà trường đến từ đó
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    56 - một chuỗi của bảng mà trường đến từ
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    57 - một chuỗi tên trường
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    58 - một chuỗi của trường được viết hoa toàn bộ
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    59 - một số độ dài trường, như được cung cấp bởi cơ sở dữ liệu

Đối số

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
50 là một
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
61, khi được gọi, sẽ trả về chuyển đổi loại mặc định cho trường đã cho

Khi lấy dữ liệu trường, các phương thức trợ giúp sau có mặt trên đối tượng

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
49

  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    63 - phân tích trường thành một chuỗi
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    64 - phân tích trường thành một
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    48
  • var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    66 - phân tích cú pháp trường dưới dạng giá trị hình học

Giao thức MySQL là một giao thức dựa trên văn bản. Điều này có nghĩa là qua dây, tất cả các loại trường được biểu diễn dưới dạng một chuỗi, đó là lý do tại sao chỉ các hàm giống như chuỗi mới khả dụng trên đối tượng

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
49. Dựa trên thông tin loại (chẳng hạn như
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
68), kiểu truyền sẽ chuyển đổi trường chuỗi thành một loại JavaScript khác (chẳng hạn như
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
69)

Đây là một ví dụ về chuyển đổi

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
70 thành boolean

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
59

CẢNH BÁO. BẠN PHẢI GỌI trình phân tích cú pháp bằng cách sử dụng một trong ba hàm trường này trong lệnh gọi lại typeCast tùy chỉnh của bạn. Họ chỉ có thể được gọi một lần

Gỡ lỗi và báo cáo sự cố

Nếu bạn đang gặp sự cố, một điều có thể hữu ích là bật chế độ

$ npm install mysqljs/mysql
11 cho kết nối

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
0

Điều này sẽ in tất cả các gói đến và đi trên thiết bị xuất chuẩn. Bạn cũng có thể hạn chế gỡ lỗi đối với các loại gói bằng cách chuyển một mảng các loại để gỡ lỗi

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
1

để hạn chế gỡ lỗi đối với truy vấn và gói dữ liệu

Nếu điều đó không có ích, vui lòng mở vấn đề GitHub. Một vấn đề GitHub tốt sẽ có

  • Số lượng mã tối thiểu cần thiết để tái tạo sự cố (nếu có thể)
  • Càng nhiều đầu ra gỡ lỗi và thông tin về môi trường của bạn (phiên bản mysql, phiên bản nút, hệ điều hành, v.v. ) như bạn có thể thu thập

Vấn đề an ninh

Các vấn đề bảo mật không nên được báo cáo trước thông qua GitHub hoặc một diễn đàn công cộng khác, nhưng được giữ ở chế độ riêng tư để các cộng tác viên đánh giá báo cáo và (a) đưa ra cách khắc phục và lên kế hoạch cho ngày phát hành hoặc (b) khẳng định rằng đó không phải là vấn đề bảo mật

Diễn đàn riêng tư chính là email, bằng cách gửi email cho tác giả của mô-đun hoặc mở một vấn đề GitHub chỉ cần hỏi xem vấn đề bảo mật sẽ được giải quyết cho ai mà không tiết lộ vấn đề hoặc loại vấn đề

Một báo cáo lý tưởng sẽ bao gồm một chỉ dẫn rõ ràng về vấn đề bảo mật là gì và nó sẽ bị khai thác như thế nào, lý tưởng nhất là có bằng chứng về khái niệm ("PoC") đi kèm để các cộng tác viên chống lại và xác thực các bản sửa lỗi tiềm năng đối với

Đóng góp

Dự án này hoan nghênh sự đóng góp từ cộng đồng. Đóng góp được chấp nhận bằng cách sử dụng yêu cầu kéo GitHub. Nếu bạn không quen với việc tạo yêu cầu kéo GitHub, vui lòng tham khảo tài liệu GitHub "Tạo yêu cầu kéo"

Đối với yêu cầu kéo tốt, chúng tôi yêu cầu bạn cung cấp thông tin sau

  1. Cố gắng bao gồm một mô tả rõ ràng về yêu cầu kéo của bạn trong phần mô tả. Nó nên bao gồm các "cái gì" và "tại sao" cơ bản cho yêu cầu
  2. Các bài kiểm tra nên vượt qua tốt nhất có thể. Xem phần Chạy thử nghiệm để biết cách chạy các thử nghiệm khác nhau. GitHub cũng sẽ tự động chạy thử nghiệm để hoạt động như một mạng lưới an toàn
  3. Yêu cầu kéo nên bao gồm các thử nghiệm cho sự thay đổi. Một tính năng mới phải có các thử nghiệm cho tính năng mới và các bản sửa lỗi phải bao gồm một thử nghiệm không thành công mà không thay đổi mã tương ứng và vượt qua sau khi chúng được áp dụng. Lệnh
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    72 sẽ tạo một thư mục
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    73 chứa các trang HTML về phạm vi mã, để hiểu rõ hơn liệu mọi thứ bạn thêm có đang được kiểm tra hay không
  4. Nếu yêu cầu kéo là một tính năng mới, vui lòng đảm bảo bao gồm tất cả các bổ sung tài liệu thích hợp trong tệp
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    74
  5. Để giúp đảm bảo rằng mã của bạn có phong cách tương tự với mã hiện có, hãy chạy lệnh
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'example.org',
      user     : 'bob',
      password : 'secret'
    });
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack);
        return;
      }
    
      console.log('connected as id ' + connection.threadId);
    });
    75 và khắc phục mọi sự cố được hiển thị

chạy thử nghiệm

Bộ thử nghiệm được chia thành hai phần. kiểm tra đơn vị và kiểm tra tích hợp. Các bài kiểm tra đơn vị chạy trên bất kỳ máy nào trong khi các bài kiểm tra tích hợp yêu cầu thiết lập phiên bản máy chủ MySQL

Chạy thử nghiệm đơn vị

var connection = mysql.createConnection({
  host : 'localhost',
  ssl  : {
    ca : fs.readFileSync(__dirname + '/mysql-ca.crt')
  }
});
2

Chạy thử nghiệm tích hợp

Đặt các biến môi trường

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
76,
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
77,
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
78,
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
79 và
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
80.
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
81 cũng có thể được sử dụng thay cho
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
77 và
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
78 để kết nối qua ổ cắm UNIX. Sau đó chạy
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
84

Ví dụ bạn có cài mysql chạy trên localhost. 3306 và không đặt mật khẩu cho người dùng

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});
85, hãy chạy