Đô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ư.
- 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 này để 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ụngvar 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ỏ quavar 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 connection = mysql.createConnection[{ // disable FOUND_ROWS flag, enable IGNORE_SPACE flag flags: '-FOUND_ROWS,IGNORE_SPACE' }];
0] thì đối chiếu mặc định cho bộ ký tự đó được sử dụng. [Mặc định.var connection = mysql.createConnection[{ // disable FOUND_ROWS flag, enable IGNORE_SPACE flag flags: '-FOUND_ROWS,IGNORE_SPACE' }];
1]var connection = mysql.createConnection[{ // disable FOUND_ROWS flag, enable IGNORE_SPACE flag flags: '-FOUND_ROWS,IGNORE_SPACE' }];
2. 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 JavaScriptvar connection = mysql.createConnection[{ // disable FOUND_ROWS flag, enable IGNORE_SPACE flag flags: '-FOUND_ROWS,IGNORE_SPACE' }];
3 và ngược lại. Đây có thể làvar connection = mysql.createConnection[{ // disable FOUND_ROWS flag, enable IGNORE_SPACE flag flags: '-FOUND_ROWS,IGNORE_SPACE' }];
4,var connection = mysql.createConnection[{ // disable FOUND_ROWS flag, enable IGNORE_SPACE flag flags: '-FOUND_ROWS,IGNORE_SPACE' }];
5 hoặc phần bù ở dạngvar connection = mysql.createConnection[{ // disable FOUND_ROWS flag, enable IGNORE_SPACE flag flags: '-FOUND_ROWS,IGNORE_SPACE' }];
6 hoặcvar connection = mysql.createConnection[{ // disable FOUND_ROWS flag, enable IGNORE_SPACE flag flags: '-FOUND_ROWS,IGNORE_SPACE' }];
7. [Mặc định.var connection = mysql.createConnection[{ // disable FOUND_ROWS flag, enable IGNORE_SPACE flag flags: '-FOUND_ROWS,IGNORE_SPACE' }];
4]var connection = mysql.createConnection[{ // disable FOUND_ROWS flag, enable IGNORE_SPACE flag flags: '-FOUND_ROWS,IGNORE_SPACE' }];
9. 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.connection.end[function[err] { // The connection is terminated now }];
0]connection.end[function[err] { // The connection is terminated now }];
1. Xâu chuỗi các đối tượng thay vì chuyển đổi thành giá trị. [Mặc định.connection.end[function[err] { // The connection is terminated now }];
2]connection.end[function[err] { // The connection is terminated now }];
3. 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.connection.end[function[err] { // The connection is terminated now }];
2]connection.end[function[err] { // The connection is terminated now }];
5. 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.connection.end[function[err] { // The connection is terminated now }];
6]connection.end[function[err] { // The connection is terminated now }];
7. Chức năng định dạng truy vấn tùy chỉnh. Nhìn thấyconnection.end[function[err] { // The connection is terminated now }];
8. 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.connection.end[function[err] { // The connection is terminated now }];
2]$ npm install mysqljs/mysql
00. Kích hoạt cảconnection.end[function[err] { // The connection is terminated now }];
8 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.connection.end[function[err] { // The connection is terminated now }];
2]. Kích hoạtconnection.end[function[err] { // The connection is terminated now }];
8 nhưng để lại$ npm install mysqljs/mysql
00 bị vô hiệu hóa 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] [] [xảy ra khi chúng vượt quá phạm vi [-2^53, +2^53]], nếu không . Tùy chọn này bị bỏ qua nếuconnection.end[function[err] { // The connection is terminated now }];
8 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àconnection.end[function[err] { // The connection is terminated now }];
6/connection.end[function[err] { // The connection is terminated now }];
2 hoặc một mảng tên loại để giữ dưới dạng chuỗi. [Mặc định.connection.end[function[err] { // The connection is terminated now }];
2]$ npm install mysqljs/mysql
11. In chi tiết giao thức tới thiết bị xuất chuẩn. Có thể làconnection.end[function[err] { // The connection is terminated now }];
6/connection.end[function[err] { // The connection is terminated now }];
2 hoặc một mảng tên loại gói cần được in. [Mặc định.connection.end[function[err] { // The connection is terminated now }];
2]$ 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.connection.end[function[err] { // The connection is terminated now }];
6]$ 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.connection.end[function[err] { // The connection is terminated now }];
6]$ 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.connection.end[function[err] { // The connection is terminated now }];
2]$ 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$ 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. Nhìn thấy
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['mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'];
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/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
$ 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 cuộc gọi cơ bản [hoặc cơ bản nếu sử dụng Node. 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 cuộc gọi cơ bản [hoặc cơ bản nếu sử dụng Node. 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 [hoặc cơ sở nếu sử dụng Node. 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 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 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 [hoặc cơ sở nếu sử dụng Node. 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 [hoặc cơ sở nếu sử dụng Node. 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.connection.end[function[err] { // The connection is terminated now }];
6]
Đâ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/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 connection = mysql.createConnection[{ // disable FOUND_ROWS flag, enable IGNORE_SPACE flag flags: '-FOUND_ROWS,IGNORE_SPACE' }];
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 - Hãy để 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 điều khiển 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 bộ 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 - Cờ cũ cho 4. 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
connection.end[function[err] { // The connection is terminated now }];
Đ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 đ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 lệnh 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ợ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/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 kết nối đó 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
Hồ bơi chấp nhận tất cả như nhau. 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ớivar connection = mysql.createConnection[{ // disable FOUND_ROWS flag, enable IGNORE_SPACE flag flags: '-FOUND_ROWS,IGNORE_SPACE' }];
9, 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.connection.end[function[err] { // The connection is terminated now }];
0]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ếuconnection.end[function[err] { // The connection is terminated now }];
6, nhóm sẽ xếp hàng đợi yêu cầu kết nối và gọi nó khi có sẵn. Nếuconnection.end[function[err] { // The connection is terminated now }];
2, pool sẽ ngay lập tức gọi lại thông báo lỗi. [Mặc định.connection.end[function[err] { // The connection is terminated now }];
6]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ànhvar 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
giành đượ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/mysql3
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/mysql4
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/mysql5
giải phóng
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/mysql6
Đó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/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 sử dụng cách viết 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 cho đến khi hoà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[];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
Bể bơiCụm
PoolCluster 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
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ếuconnection.end[function[err] { // The connection is terminated now }];
6,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.connection.end[function[err] { // The connection is terminated now }];
6]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útvar 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. Khivar 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ơnvar 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 trongvar 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ànhvar 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ênvar 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/mysql9
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 để 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 có 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
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 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ó thể đặt 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 để 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 ]
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
Dạng 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ư , , , 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[];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 đố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[];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 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 khỏi 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ị JavaScript được truyền 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 nó trong một 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
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 ký tự 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ác câu lệnh đã chuẩn bị ở chỗ tất cả ____________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
connection.end[function[err] { // The connection is terminated now }];
6 /connection.end[function[err] { // The connection is terminated now }];
2 - 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ànhvar 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ànhvar 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 _______4_______00 cặp 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ànhvar 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]; }];
03var 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 để 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 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 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, có thể sử dụ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]; }];08. Đ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 [cơ sở dữ liệu/bảng/tên 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
connection.end[function[err] { // The connection is terminated now }];6 để 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
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 ký tự 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 tớ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]; }];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ì ______4_______19 được sử dụng để tránh việc tiêm SQL vào 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 các đố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
connection.end[function[err] { // The connection is terminated now }];8 để 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 số 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ệnvar 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 điện chovar 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 INSERT/UPDATE - Điều rất quan trọng là không để kết quả 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 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 vào một đối tượng. Luồng này có thể dễ dàng được chuyển xuống hạ lưu và cung cấp khả năng tạm dừng/tiếp tục tự động, dựa trên tình trạng 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
connection.end[function[err] { // The connection is terminated now }];6 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 biế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['mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'];0
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 một kết nối bằng phương phá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]; }];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['mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'];1
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['mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'];2
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ủ MySQLvar 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 địnhvar 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 toàn bộ SQL 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ấnvar 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ủ MySQLvar 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['mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'];3
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['mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'];4
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['mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'];5
Ghi chú.
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 sự kiện đặ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['mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'];6
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 nhiều. Các ánh xạ sau đây tồn tại
Con số
- TINYINT
- NHỎ
- INT
- TRUNG BÌNH
- NĂM
- TRÔI NỔI
- GẤP ĐÔI
- 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['mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'];7
Hoặc ở cấp độ truy vấn
var connection = mysql.createConnection['mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'];8
đú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 có trường 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ườngvar 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 đây 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ỗivar 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ộtvar 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]; }];
48var 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ề việc 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['mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'];9
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ó
- 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 đê bảo mật
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 khai khác, nhưng được giữ ở chế độ riêng tư để 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 chỉ dẫn rõ ràng về vấn đề bảo mật là gì và 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 làm việc chống lại và xác thực các bản sửa lỗi tiềm năng chống lạ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
- 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
- Các bài kiểm tra nên vượt qua tốt nhất có thể. Xem phần về 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
- 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 thư mụcvar 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 - 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 - Để 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 có mật khẩu nào được đặt 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