Hướng dẫn how do i close a node connection in mysql? - làm cách nào để đóng kết nối nút trong mysql?
Hiện đang sử dụng: https://github.com/felixge/node-mysql Show Tôi có mã sau:
Yêu cầu đặt hoạt động hoàn toàn tốt, nhưng gọi nó là lần thứ hai, tôi gặp lỗi sau
Tôi có nên để kết nối mở cho đến khi máy chủ chết không? Cập nhật: Khi tôi di chuyển 4 vào chức năng yêu cầu đặt như vậy:
Nó hoạt động tốt. Điều này có nghĩa là 5 đóng những gì 4 đã tạo và không thể kết nối lại?
Ken Ingramunread, Ngày 13 tháng 12 năm 2019, 1:16:06 PM12/13/1912/10/19 đến nút-mysql Cần gì để thực sự có một cuộc trò chuyện dẫn đến việc tôi giải quyết vấn đề của mình? Tài liệu không cung cấp bất kỳ cái nhìn sâu sắc nào về lý do tại sao tôi không thể đóng kết nối của mình mà không gặp lỗi này: Tôi tạo kết nối của mình như thế này:
Tôi có ba chức năng tạo ra các truy vấn cơ sở dữ liệu. Hàm chứa truy vấn chọn được xây dựng như thế này:
Mã thực thi trong một chức năng khác:
Nếu tôi bỏ kết nối.end (), mã bị treo và luồng dữ liệu được giữ tại mục đầu tiên được xử lý. Nếu tôi đặt Connection.end () bên trong hàm, tôi sẽ gặp lỗi này: Lỗi kết nối cơ sở dữ liệu: Lỗi: Không thể truy vấn enqueue sau khi gọi thoát. Tôi đặt Connection.end () làm dòng cuối cùng của mã, mọi thứ đều hoạt động tốt Vấn đề mặc dù là cho các chức năng cập nhật và chèn:
Với Connection.end () trong hàm tôi gặp lỗi này.
Dựa trên tài liệu, tôi không có sự rõ ràng về cách xử lý đúng cách đóng kết nối để mã có thể xử lý đúng. Không chắc tôi đang làm gì sai. Có thể sử dụng một số MentorInng từ một người có kinh nghiệm sử dụng các kết nối để xử lý các khối dữ liệu và cách xử lý đúng cách đóng các kết nối? Lưu ý: & nbsp; Một vấn đề tương tự xảy ra khi tôi thử gộp kết nối, vì vậy đó không phải là một giải pháp khả thi. A similar problem happens when I try connection pooling, so that was not a workable solution. Ryan Leeunread, Ngày 10 tháng 12 năm 2019, 4:10:59 PM12/10/1912/10/19 đến
sự liên quan & nbsp; .queryasync ("Chọn * từ blah") // chức năng này được phơi bày như một phần của lời hứa của Blubird & nbsp; & nbsp; .each ((hàng) => {& nbsp; // bluebird's mỗi cho phép bạn lặp qua hàng của mình theo thứ tự tuần tự & nbsp; & nbsp; & nbsp; return kết nối.queryasync ("Chèn vào bộ fubar?", formatedrow) & nbsp; // mà bây giờ bạn có thể hoạt động trên mỗi hàng theo thứ tự & nbsp; }) & nbsp; .fally (() => { & nbsp; & nbsp; Connection.end (); & nbsp; }); Và nếu bạn cảm thấy thực sự bẩn, bạn luôn có thể xử lý.exit ()process.exit()
--Ryan
Làm thế nào lớn? Nếu bạn đang nói nhiều dữ liệu, bạn cần truyền phát khi bạn hết bộ nhớ trong luồng JS của mình. & NBSP; Làm thế nào bạn phát trực tuyến dữ liệu? & Nbsp; Ken Ingramunread, Ngày 10 tháng 12 năm 2019, 7:22:25 PM12/10/1912/10/19 đến
Bạn đang điều khiển các truy vấn của mình như thế nào? Hãy nhớ MySQL là đồng bộ & nbsp; và js là async. Nếu truy vấn thứ hai của bạn dựa vào truy vấn đầu tiên để hoàn thành trước, bạn có thể treo. Bạn cần phải "hứa hẹn chuỗi" chúng. Tôi hoàn toàn giới thiệu Bluebird cho điều này. Bạn không cần phải đối phó với tất cả các gói tự mình. Kiểm tra nó:
Và nếu bạn cảm thấy thực sự bẩn, bạn luôn có thể xử lý.exit ()
Tôi muốn chỉ ra rằng quá trình này dường như hoạt động tốt nếu một phần dữ liệu duy nhất. Tôi đang cung cấp cho mã của mình một bộ dữ liệu lớn, để được xử lý theo dòng dưới dạng một lô. Ken Ingramunread, Ngày 10 tháng 12 năm 2019, 7:22:25 PM12/10/1912/10/19 đến
Các truy vấn là độc lập. Chèn và cập nhật tồn tại trong vũ trụ của riêng họ.
Đáng buồn thay, bất kỳ nỗ lực nào để đóng thủ công kết nối kết nối Xử lý hoàn thành +++++++++++++++++++++++++++++++++++> & NBSP; sự kiện.js: 174 & nbsp; & nbsp; & nbsp; người giao cầu; // không xử lý 'lỗi' sự kiện & nbsp; & nbsp; & nbsp; ^ Lỗi: Không thể bỏ thuốc sau khi gọi QUIT. & NBSP; & nbsp; tại giao thức._ValidateEnqueue (Project \ Node \ node_modules \ mysql \ lib \ protucol \ protucol.js: 215: 16) & nbsp; & nbsp; tại giao thức._enqueue (Project \ Node \ node_modules \ mysql \ lib \ protocol \ protucol.js: 138: 13) & nbsp; & nbsp; tại giao thức.quit (Project \ Node \ node_modules \ mysql \ lib \ Protocol \ protucol.js: 91: 23) & nbsp; & nbsp; tại Connection.end (Project \ Node \ node_modules \ mysql \ lib \ Connection.js: 242: 18) & nbsp; & nbsp; Tại CheckRecord.then.Finally (Project \ Node \ Utility.js: 302: 32) Ken Ingramunread, Ngày 13 tháng 12 năm 2019, 1:16:06 PM12/13/1912/13/19 đến nút-mysql Cần gì để thực sự có một cuộc trò chuyện dẫn đến việc tôi giải quyết vấn đề của mình? Tài liệu không cung cấp bất kỳ cái nhìn sâu sắc nào về lý do tại sao tôi không thể đóng kết nối của mình mà không gặp lỗi này: CẬP NHẬT THEDATA SET FIELD = 'Thông tin' trong đó objid = 1234 {Lỗi: nhóm được đóng lại. Tại pool.getConnection (Project \ Node \ node_modules \ mysql \ lib \ pool.js: 25: 15) Tại Promise (Project \ Node \ Utility.js: 506: 8) tại New Promise () Tại ExecuteQuery (Project \ Node \ Utility.js: 505: 9) Tại UpdateRecord (Project \ Node \ Utility.js: 479: 9) Tại ProcessRecord (Project \ Node \ Utility.js: 443: 12) Tại CheckRecord.Then (Project \ Node \ Utility.js: 301: 12) Tại Process._TickCallback (Internal/Process/next_tick.js: 68: 7) Mã: 'pool_closes'} Bể bơi được phát hành. Bể bơi được phát hành. Theo lời khuyên của bạn, tôi đã điều chỉnh mã của mình: checkRecord(data) .then ((hàng) => { //console.log(JSON.stringify(row)); return ProcessRecord (hàng [0], hàng [1], đầu vào);
// for (var i = 0; i // console.log (cơ sở dữ liệu_changes.join ("','"));console.log(database_changes.join("','")); //} }) .then(()=>{ pool.end((err)=>{ if (err) ném err; Console.log ("Bể bơi phát hành."); unread, Ngày 13 tháng 12 năm 2019, 1:16:06 PM12/13/1912/13/19 đến nút-mysql Cần gì để thực sự có một cuộc trò chuyện dẫn đến việc tôi giải quyết vấn đề của mình? Tài liệu không cung cấp bất kỳ cái nhìn sâu sắc nào về lý do tại sao tôi không thể đóng kết nối của mình mà không gặp lỗi này: CẬP NHẬT THEDATA SET FIELD = 'Thông tin' trong đó objid = 1234 {Lỗi: nhóm được đóng lại. unread, Ngày 13 tháng 12 năm 2019, 1:16:06 PM12/13/1912/13/19 đến nút-mysql Cần gì để thực sự có một cuộc trò chuyện dẫn đến việc tôi giải quyết vấn đề của mình? Tài liệu không cung cấp bất kỳ cái nhìn sâu sắc nào về lý do tại sao tôi không thể đóng kết nối của mình mà không gặp lỗi này: |