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 Show
$ 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
người đóng gópCả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
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)
Cộng đồngNế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
Thiết lập kết nốiCá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ốiKhi thiết lập kết nối, bạn có thể đặt các tùy chọn sau
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 SSLTùy chọn $ npm install mysqljs/mysql25 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
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
Đâ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ốiNế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/mysql24. 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
Chấm dứt kết nốiCó 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/mysql88 đế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/mysql88 có thể được gửi, một đối số $ npm install mysqljs/mysql90 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/mysql91. Đ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/mysql91 đả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/mysql0 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/mysql91 không nhận đối số gọi lại kết nối tổng hợpThay 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/mysql95. Đọ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/mysql1 Đây là lối tắt cho luồng mã $ npm install mysqljs/mysql96 -> $ npm install mysqljs/mysql97 -> $ npm install mysqljs/mysql98. Sử dụng $ npm install mysqljs/mysql96 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/mysql2 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ơiNhó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
sự kiện bể bơicó được, thu đượcNhó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/mysql3 sự liên quanNhó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/mysql4 hàng đợiNhó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/mysql5 phóng thíchNhó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/mysql6 Đóng tất cả các kết nối trong một nhómKhi 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/mysql7 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ơiPoolCluster cung cấp kết nối nhiều máy chủ. (nhóm & thử lại & bộ chọn) $ npm install mysqljs/mysql8 Tùy chọn PoolCluster
$ npm install mysqljs/mysql9 Chuyển đổi người dùng và thay đổi trạng thái kết nốiMySQL 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à
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ốiBạ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ấnCá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ấnThậ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
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ấnNế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ấnBạ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ỉnhNế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ènNế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ưởngBạ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 đổiBạ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ốiBạ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 songGiao 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
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ệnhHỗ 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éoKhi 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ịchHỗ 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ìnhMộ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ỗiMô-đ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
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ố
Ngày
Đệm
Sợi dâyVă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
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ỉnhBạ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
Đố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
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/mysql11 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ó
Vấn đề an ninhCá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ópDự á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
chạy thử nghiệmBộ 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 |