Node.js 에서 MySQL 을 사용 하면 connect ECONNREFUSED 127.0.0.1:3306 문제 가 발생 합 니 다.
2842 단어 node.jsmysql잘못 을 보고 하 다
최근 에 Node 로 작은 물건 을 쓰 려 면 MySQL 데이터 베 이 스 를 사용 해 야 합 니 다.현재 가장 광범 위 하 게 사용 되 는 것 은 my sql 라 이브 러 리 입 니 다.그리고 지금 ORM 이 이렇게 핫 하 니 차라리 ORM 에 도 올 라 가 보 세 요.마침 저도 공 부 를 못 해서 Sequelize.js 라 는 ORM 라 이브 러 리 를 찾 았 습 니 다.
문제점 을 발견 하 다
Sequelize 문 서 를 보 세 요.so easy,2 분 안에 끝 냅 니 다~
import Sequelize from 'sequelize';
let sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
port: 3306,
dialect: 'mysql',
pool: {
max: 5,
min: 0,
idle: 10000
}
});
// ...
운행 하 다SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306
뭐야,왜 이런 오류 가 생 겼 지?나 는 분명히 localhost 를 설 치 했 는데 왜 127.0.0.1 이 되 었 습 니까?문 제 를 해결 하 다
예전 에 구 글 에서 많은 사람들 이 이 문 제 를 만 났 다 는 것 을 발 견 했 습 니 다.해결 방법 은 대략 몇 가지 가 있 습 니 다.
1.당신 가장귀 는 MySQL 을 설치 하지 않 고 도망 갈 수 있 을 것 같 습 니까?빨리 데이터베이스 설치 해!
2.데이터 베 이 스 를 실 행 했 습 니까?빨리/etc/init.d/mysql 시작
3.포트 를 잘못 썼 습 니 다.
4.skip-networking 이 옵션 을 열 었 습 니까?Remove it !
이 를 보고 저 는 반응 을 했 습 니 다.제 데이터 베 이 스 는 원 격 접근 과 관련 이 없 기 때문에 유 닉 스 socket 통신 만 사용 하면 됩 니 다.그래서 skip-networking 을 사용 하여 MySQL 이 지정 한 포트 를 감청 하지 않도록 했 습 니 다.
skip-networking 이 뭔 지 먼저 확인 해 보 세 요.
Do not listen for TCP/IP connections at all. All interaction with mysqld must be made using named pipes or shared memory (on Windows) or Unix socket files (on Unix). This option is highly recommended for systems where only local clients are permitted.
번역 하면:
TCP/IP 연결 을 감청 하지 마 세 요.my sqld 와 의 모든 상호작용 은 이름 파이프 나 공유 메모리(Windows 에서)또는 Unix socket 파일(Unix 에서)을 사용 해 야 합 니 다.로 컬 클 라 이언 트 만 허용 하 는 시스템 에 이 옵션 을 사용 하 는 것 을 강력 히 권장 합 니 다.
근원
그러나 안전성 을 위해 서 나 는 이 선택 을 제거 하고 싶 지 않다.고통 을 참 으 며 ORM 을 사용 하지 않 을 수 밖 에 없 을 까?
문 서 를 보 았 기 때문에 my sql 이 연결 라 이브 러 리 는 socketPath 라 는 속성 으로 유 닉 스 소켓 파일 을 지정 할 수 있 지만 Sequelize.js 에 서 는 관련 속성 을 발견 하지 못 했 습 니 다.
마지막 으로 issue 를 보 낼 수 밖 에 없 었 습 니 다.얼마 지나 지 않 아 dalao 는 dialectOptions 로 my sql 의 속성 을 설정 할 수 있다 고 대답 했다.
다음은 테스트 에 성공 한 코드 입 니 다.
import Sequelize from 'sequelize';
let sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
port: 3306,
dialect: 'mysql',
dialectOptions: {
socketPath: '/tmp/mysql.sock' //
}
pool: {
max: 5,
min: 0,
idle: 10000
}
});
이렇게 쉬 운 데..총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Express + AWS S3 이미지 업로드하기웹 사이트 및 모바일 애플리케이션 등에서 원하는 양의 데이터를 저장하고 보호할 수 있다. 데이터에 대한 액세스를 최적화, 구조화 및 구성할 수 있는 관리 기능을 제공한다. AWS S3 에 저장된 객체에 대한 컨테이너...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.