우분투 환경에서 sequelize문제입니다.
412
작성한 질문수 1
안녕하세요~
우분투 환경에서 api 서버와 db연동을 위해 강의에서 하시던대로 mysql 8버전을 설치후 테이블명이 다 대문자로 생성되어서
db를 drop시키고 다시 reload all했으나 재생성이 되지 않았습니다.
npx sequelize db:create로 만들면 테이블명이 무조건 대문자로만 만들어집니다.ㅠㅠ
다시 drop시키고 npx pm2 reload all로 재실행하여도 db가 생성이 되지 않는데 이유가 무엇일까요?..
db가 있으면 그냥 넘어가고 없으면 생성하는 걸로 알고있었는데 맞나요?
const express = require("express");
const cors = require("cors");
const session = require("express-session");
const cookieParser = require("cookie-parser");
const postRouter = require("./routes/post");
const postsRouter = require("./routes/posts");
const userRouter = require("./routes/user");
// models/index.js에서 model이 등록된 sequelize를 가져옴
const db = require("./models/index.js");
const passport = require("passport");
const passportConfig = require("./passport");
const dotenv = require("dotenv");
const morgan = require("morgan");
const path = require("path");
const hpp = require("hpp");
const helmet = require("helmet");
dotenv.config();
const app = express();
//sequelize.sync() => Promise기반 함수
db.sequelize
.sync()
.then(() => {
console.log("db 연결 성공!");
})
.catch(console.error);
passportConfig();
if (process.env.NODE_ENV === "production") {
app.use(morgan("combined")); // 자세한 로그( 접속자의 ip도 나옴 )
app.use(hpp());
app.use(helmet());
app.use(
cors({
origin: "http://sonteve.kr",
credentials: true,
})
);
} else {
app.use(morgan("dev")); // 개발모드에서만 로그 찍어줌 (디버깅 편함)
app.use(
cors({
// credentials : true일때는 모든도메인허용불가하므로 정확한 도메인을 적어주어야한다. 또는 origin: true 로 해준다.
origin: true, // 모든 도메인으로 부터의 요청 허용 (도메인이 다르면 cors에러가남.) 프론트를 3060 백은 3065이기때문
credentials: true, // 도메인이 다르면 쿠키가 전달이 안되는데 쿠키를 보내려면 credentails를 true로 해줘야함.
// front에서는 axios요청의 세번째 인자로 { withCredentials: true} 를 넣어줘야 쿠키가 동봉된다.
})
);
}
// 프론트에서 body에 보내온 데이터를 해석해준다.
// 라우터에 걸리면 미들웨어가 종료되기때문에 상단에 위치시켜준다.
// app.use("/", express.static(path.join(__dirname, "uploads"))); => localhost:3065/이미지파일.png (프론트에서 서버쪽 폴더구조 모르게할 수 있다.)
app.use("/", express.static(path.join(__dirname, "uploads"))); // __dirname(back)과 uploads경로를 합쳐준다. 운영체제 마다 경로가 차이나기때문에 path.join을쓴다.
app.use(express.json()); // json으로 넘어오는 데이터를 해석 해서 req.body에 넣어준다. (axio를 통해 받을때)
app.use(express.urlencoded({ extended: true })); // form submit시의 데이터를 해석해서 req.body에 넣어 준다 . (일반 form데이터를 받을때)
/*쿠키에 랜덤한 문자열 정보를 넘기고 브라우저에서 서버로 요청할때
쿠키를 담아서 보내면 그 랜덤한 문자열에 해당하는 정보를 찾는다.*/
app.use(cookieParser());
app.use(
session({
saveUninitialized: false,
resave: false,
secret: process.env.COOKIE_SECRET,
cookie: {
httpOnly: true,
secure: false,
domain: process.env.NODE_ENV === "production" && ".sonteve.com",
},
})
);
app.use(passport.initialize());
app.use(passport.session());
app.get("/", (req, res) => {
console.log("hellonode");
res.send("hello express");
});
app.use("/post", postRouter);
app.use("/posts", postsRouter);
app.use("/user", userRouter);
// 에러처리 미들웨어 존재하는부분
/*
(기본 에러표시를 바꾸고 싶다면 생성해서 사용한다.)
app.use((err,req,res,next) => {})
*/
app.listen(80, () => {
console.log("3065포트에서 대기중");
});
답변 2
0
db를 말씀하시는 건가요? table을 말씀하시는 건가요?
react-nodebird는 db고 그 아래 Users, Posts 등은 테이블입니다.
sequelize.sync는 테이블을 만들어주는 기능으로 db가 존재하지 않으면 작동하지 않습니다.
대문자로 생성되는 걸 원치 않으시면 models에서 설정에 tableName: 'users', 이런 식으로 정확히 소문자로 tableName 옵션을 기입해주시면 됩니다.
넥스트 버젼 질문
0
77
2
로그인시 401 Unauthorized 오류가 뜹니다
0
89
1
무한 스크롤 중 스크롤 튐 현상
0
175
1
특정 페이지 접근을 막고 싶을 때
0
103
2
createGlobalStyle의 위치와 영향범위
0
96
2
인라인 스타일 리렌더링 관련
0
91
2
vsc 에서 npm init 설치시 오류
0
146
2
nextjs 15버전 사용 가능할까요?
0
158
1
화면 새로고침 문의
0
121
1
RTK에서 draft, state 차이가 있나요?
0
153
2
Next 14 사용해도 될까요?
0
452
1
next, node 버전 / 폴더 구조 질문 드립니다.
0
349
1
url 오류 질문있습니다
0
211
1
ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out
0
372
1
sudo certbot --nginx 에러
0
1274
2
Minified React error 콘솔에러 (hydrate)
0
469
1
카카오 공유했을 때 이전에 작성했던 글이 나오는 버그
0
247
1
프론트서버 배포 후 EADDRINUSE에러 발생
0
327
1
npm run build 에러
0
518
1
front 서버 npm run build 중에 발생한 에러들
0
381
1
서버 실행하고 브라우저로 들어갔을때 404에러
0
338
2
css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.
0
287
1
팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.
0
237
2
해시태그 검색에서 throttle에 관해 질문있습니다.
0
201
1





