Mất kết nối MySQL: máy chủ đã đóng kết nối

Tôi có kết nối ứng dụng nodeJS rất đơn giản với MySql ClearDB. Lần đầu tiên chạy nó không có vấn đề gì khi kết nối với DB và thực hiện một CHỌN đơn giản nhưng sau vài phút, máy chủ gặp sự cố với kết nối DB không thành công. Bất cứ ý tưởng tại sao những gì là sai?

LỖI.
Mất kết nối. Máy chủ đã đóng kết nối.

đây là mã của tôi

trang web. js

var express = require("express");
var mysql      = require('mysql');
var app = express();
app.use(express.logger());

var connection = mysql.createConnection({
  host     : 'us-cdbr-east-04.cleardb.com',
  user     : 'b6#####',
  password : 'b3f####',
  database : 'heroku_1d########5291'
});

connection.connect();

app.get('/', function(request, response) {
  connection.query('SELECT * from t_users', function(err, rows, fields) {
      if (err) {
        console.log('error: ', err);
        throw err;
      }
      response.send(['Hello World!!!! HOLA MUNDO!!!!', rows]);
    });
});

var port = process.env.PORT || 5000;
app.listen(port, function() {
  console.log("Listening on " + port);
});

hồ sơ

web: node web.js

bưu kiện. json

{
  "name": "node-example",
  "version": "0.0.1",
  "dependencies": {
    "express": "3.1.x"
    , "mysql": ""
  },
  "engines": {
    "node": "0.10.x",
    "npm": "1.2.x"
  }
}

ĐĂNG NHẬP

Aug 25 12:31:30 polar-beach-8042 heroku/slug-compiler:  Slug compilation finished 
Aug 25 12:31:30 polar-beach-8042 heroku/web.1:  Stopping all processes with SIGTERM 
Aug 25 12:31:33 polar-beach-8042 heroku/web.1:  Process exited with status 143 
Aug 25 12:31:51 polar-beach-8042 app/web.1:  - - - [Sun, 25 Aug 2013 19:31:51 GMT] "GET / HTTP/1.1" 200 131 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36" 
Aug 25 12:31:51 polar-beach-8042 app/web.1:  - - - [Sun, 25 Aug 2013 19:31:51 GMT] "GET /favicon.ico HTTP/1.1" 404 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36" 
Aug 25 12:31:51 polar-beach-8042 heroku/router:  at=info method=GET path=/favicon.ico host=polar-beach-8042.herokuapp.com fwd="67.86.230.11" dyno=web.1 connect=2ms service=5ms status=404 bytes=34 
Aug 25 12:31:52 polar-beach-8042 heroku/router:  at=info method=GET path=/ host=polar-beach-8042.herokuapp.com fwd="67.86.230.11" dyno=web.1 connect=2ms service=7ms status=200 bytes=131 
Aug 25 12:32:51 polar-beach-8042 app/web.1:  Error: Connection lost: The server closed the connection. 
Aug 25 12:32:51 polar-beach-8042 app/web.1:      at Protocol.end (/app/node_modules/mysql/lib/protocol/Protocol.js:73:13) 
Aug 25 12:32:51 polar-beach-8042 app/web.1:      at Socket.onend (stream.js:79:10) 
Aug 25 12:32:51 polar-beach-8042 app/web.1:      at Socket.EventEmitter.emit (events.js:117:20) 
Aug 25 12:32:51 polar-beach-8042 app/web.1:      at _stream_readable.js:910:16 
Aug 25 12:32:51 polar-beach-8042 app/web.1:      at process._tickCallback (node.js:415:13) 
Aug 25 12:32:52 polar-beach-8042 heroku/web.1:  Process exited with status 8 
Aug 25 12:32:52 polar-beach-8042 heroku/web.1:  State changed from up to crashed 

CẢM ƠN

Tôi đã thử truy vấn một phiên bản Cơ sở dữ liệu Amazon Relational Database Service (Amazon RDS) đang chạy MySQL và tôi nhận được một trong các thông báo lỗi sau. "Máy chủ MySQL đã biến mất" hoặc "Mất kết nối với máy chủ trong khi truy vấn. "

Mô tả ngắn

Nếu máy chủ hết thời gian chờ và đóng kết nối, bạn có thể gặp một trong các lỗi sau

  • CR_SERVER_GONE_ERROR - Máy khách không thể gửi câu hỏi đến máy chủ
  • CR_SERVER_LOST - Máy khách không gặp lỗi khi ghi vào máy chủ, nhưng máy khách không nhận được câu trả lời đầy đủ (hoặc bất kỳ câu trả lời nào) cho câu hỏi

Để biết thêm thông tin, hãy xem tài liệu MySQL dành cho máy chủ MySQL đã biến mất

Nghị quyết

Xem các nguyên nhân sau đây và các giải pháp liên quan cho các lỗi này

  • Nếu một kết nối không hoạt động quá lâu, thì kết nối có thể bị ngắt không chính xác từ máy khách. Để giải quyết vấn đề này, hãy xác minh rằng thời gian chờ của ứng dụng ngắn hơn thời gian chờ của MySQL và đảm bảo rằng các ứng dụng của bạn đóng các kết nối không hoạt động
  • Nếu kết nối hết thời gian chờ, thì hãy tăng thời gian chờ cho MySQL bằng cách tăng các tham số wait_timeout và Interactive_timeout bằng cách sử dụng nhóm tham số tùy chỉnh. Để biết thêm thông tin, hãy xem Làm việc với các nhóm tham số DB
  • Nếu truy vấn tạo ra lỗi đang truy xuất tập dữ liệu lớn thì hãy tăng tham số kích thước max_allowed_packet bằng cách sử dụng nhóm tham số tùy chỉnh. Để biết thêm thông tin, hãy xem phần Sửa đổi tham số trong nhóm tham số DB.
    Lưu ý. Đối với Amazon Aurora, bạn có thể sửa đổi các tham số và đặt chúng trong một nhóm tham số cụm để áp dụng ở cấp độ toàn bộ cụm. Đặt nó trong nhóm tham số DB chỉ áp dụng các tham số ở cấp phiên bản. Đối với cơ sở dữ liệu MySQL của Amazon Lightsail, bạn phải kiểm tra xem có sẵn các tham số để sửa đổi hay không trước khi sửa đổi chúng bằng giao diện dòng lệnh (CLI). Để biết thêm thông tin, hãy xem Cập nhật tham số cơ sở dữ liệu trong Amazon Lightsail. Đối với phiên bản Lightsail hoặc cơ sở dữ liệu MySQL cục bộ của máy chủ hoặc MySQL của Amazon Elastic Compute Cloud (Amazon EC2), bạn có thể đặt tham số trong tệp cấu hình. Bạn cũng có thể đặt xxx chung, tương tự như cách nó được đặt trong môi trường MySQL tại chỗ bình thường.
  • Nếu lỗi chỉ xảy ra khi trả về tập dữ liệu lớn, máy khách có thể đang sử dụng giá trị MTU lớn là 9001. Để giải quyết vấn đề này, hãy giảm giá trị MTU TCP/IP của máy khách. Để biết thông tin về cách thay đổi giá trị MTU máy khách của bạn, hãy xem Định cấu hình MTU của phiên bản
  • Nếu bất kỳ tham số init_connect nào được đặt thành giá trị không cho phép xử lý tham số đó, các kết nối máy khách được liên kết có thể không thành công. Đảm bảo rằng tất cả các tham số init_connect đều được xử lý chính xác. Đảm bảo rằng người dùng có quyền EXECUTE đối với bất kỳ quy trình nào được tham chiếu dưới dạng tham số init_connect
  • Nếu tất cả các kết nối bị rớt cùng lúc, hãy xác nhận rằng các kết nối khác vẫn hoạt động khi sự cố này xảy ra. Để giải quyết vấn đề này, hãy xác minh phiên bản Cơ sở dữ liệu MySQL không gặp sự cố hoặc lỗi bằng cách xem các sự kiện Amazon RDS và xem lại nhật ký lỗi MySQL của bạn



Bạn có cần thanh toán hoặc hỗ trợ kỹ thuật?

Tại sao MySQL liên tục mất kết nối?

Lý do phổ biến nhất dẫn đến lỗi máy chủ MySQL đã biến mất là máy chủ đã hết thời gian chờ và đóng kết nối . Theo mặc định, máy chủ sẽ đóng kết nối sau 8 giờ nếu không có gì xảy ra. Bạn có thể thay đổi giới hạn thời gian bằng cách đặt biến wait_timeout khi khởi động mysqld.

Mã lỗi 2013 trong bàn làm việc của MySQL là gì?

Mất kết nối với máy chủ MySQL trong khi truy vấn .

Làm cách nào để cài đặt MySQL trong Node js?

Để tải xuống và cài đặt mô-đun "mysql", hãy mở Command Terminal và thực hiện như sau. .
C. \Users\Tên của bạn>npm cài đặt mysql
var mysql = yêu cầu('mysql');
Chạy "demo_db_connection. js" C. \Users\Tên của bạn>nút demo_db_connection. js
kết nối
lừa đảo. kết nối (chức năng (err) { if (err) ném err; bảng điều khiển