묻고 답해요
143만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
sequelize cascade 옵션을 사용해서 delete 할때
안녕하세요.웹 프로젝트를 진행하면서 궁금한 점이 있어서 질문드립니다.mysql과 sequelize를 사용하며users 테이블과 contents 테이블이 1:N 관계를 가지고 있습니다.그래서 users 데이터를 delete 할 때 자식으로 묶인 contents 데이터들을cascade 옵션을 통해 같이 delete 시키고자 합니다.models/contents.jsmodels/users.js 이때 그냥 삭제시키는 게 아니라 users 테이블과 contents 테이블 모두paranoid 옵션을 통해 deletedAt을 생성시키고 삭제된 날짜를 찍히게 하고자 하는데현재 user를 delete 하면 user는 삭제가 되어 deletedAt이 잘 나오지만 content는 삭제가 되지 않아deletedAt이 나오지 않는 상황입니다.구글링을 통해 여러 방법을 시도해 보았지만 해결되지 않아 질문드립니다.hooks나 api를 사용하지 않고 cascade를 통해 자식 요소까지삭제되면서 deletedAt이 잘 나올 수 있는 효과적인 방법이 있을까요?
-
미해결
Springboot 스케줄러를 이용한 db 데이터 자동 삭제
스프링부트스케줄러를 이용해서 mysql에 있는 데이터를 자동삭제 하고 싶습니다. 블로그들을 찾아봐도 딱히 쓸만한 정보를 얻지 못해서 이 글을 작성하게 됩니다. 따롴 클래스를 만들던지 해서 controller에서 처리하고 싶습니다. db에 데이터가 삽입된 기준으로 하던지 현재 시간을 기준으로 최근 1달 정도 데이터를 유지하던지 그런 방식으로 진행하고 싶습니다. 알려주십쇼 ..
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
책15강 LightSail 사용하기 mysql 생성문제
안녕하세요 제로초선생님 AWS로 배포하기 Lightsail부분 강의에서 MySQL 데이터베이스 생성시도하다가 문제가 생겨서 질문합니다 강의 13분에 나오는 것처럼 ALTER USER ~ 명령어 똑같이 치고 (물론 비밀번호는 제 mysql 비밀번호로 변경했습니다), 다시 돌아와서 데이터베이스 생성하려는데 사진처럼 여전히 ERROR가 뜹니다. 이럴경우에 제가 놓친부분이 혹시나 있을까요? 구원의 손길 부탁드립니다..ㅠㅠ 답변 감사합니다 :)
-
미해결
php 회원가입 db 질문 드립니다.
Fatal error: Uncaught Error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in C:\Apache24\htdocs\dbcon.php:8 Stack trace: #0 C:\Apache24\htdocs\index.php(2): include() #1 {main} thrown in C:\Apache24\htdocs\dbcon.php on line 8. APM 환경에서 php로 회원가입을 구현하고 싶은데 위와 같은 오류가 뜹니다. 오류 문장에 언급된 php 파일 첨부합니다.. 찾아봐도 잘 안 나오고 뭐가 문제인지 모르겠습니다. ㅇ위에서 말한 line 8은 아래입니다. 오래 붙잡았는데도 도저히 모르겠습니다.. 도와주시면 감사하겠습니다. $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); dbcon.php <?php $host = 'localhost'; $username = ''; $password = ''; $dbname = 'userdb'; $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); try { $con = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8",$username, $password); } catch(PDOException $e) { die("Failed to connect to the database: " . $e->getMessage()); } $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $con->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) { function undo_magic_quotes_gpc(&$array) { foreach($array as &$value) { if(is_array($value)) { undo_magic_quotes_gpc($value); } else { $value = stripslashes($value); } } } undo_magic_quotes_gpc($_POST); undo_magic_quotes_gpc($_GET); undo_magic_quotes_gpc($_COOKIE); } header('Content-Type: text/html; charset=utf-8'); session_start(); ?> index.php <?php include('dbcon.php'); include('check.php'); if(is_login()){ if ($_SESSION['user_id'] == 'admin' && $_SESSION['is_admin']==1) header("Location: admin.php"); else header("Location: welcome.php"); } ?> <!DOCTYPE html> <html> <head> <title>로그인 예제</title> <link rel="stylesheet" href="bootstrap/css/bootstrap1.min.css"> </head> <body> <div class="container"> <h2 align="center">로그인</h2><hr> <form class="form-horizontal" method="POST"> <div class="form-group" style="padding: 10px 10px 10px 10px;"> <label for="user_name">아이디:</label> <input type="text" name="user_name" class="form-control" id="inputID" placeholder="아이디를 입력하세요." required autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" /> </div> <div class="form-group" style="padding: 10px 10px 10px 10px;"> <label for="user_password">패스워드:</label> <input type="password" name="user_password" class="form-control" id="inputPassword" placeholder="패스워드를 입력하세요." required autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" /> </div> <div class="checkbox"> <label><input type="checkbox"> 아이디 기억</label> </div> </br> <div class="from-group" style="padding: 10px 10px 10px 10px;" > <button type="submit" name="login" class="btn btn-success">로그인</button> <a class="btn btn-success" href="registration.php" style="margin-left: 50px"> <span class="glyphicon glyphicon-user"></span> 등록 </a> </div> </br> </form> </div> </body> </html> <?php $login_ok = false; if ( ($_SERVER['REQUEST_METHOD'] == 'POST') and isset($_POST['login']) ) { $username=$_POST['user_name']; $userpassowrd=$_POST['user_password']; if(empty($username)){ $errMSG = "아이디를 입력하세요."; }else if(empty($userpassowrd)){ $errMSG = "패스워드를 입력하세요."; }else{ try { $stmt = $con->prepare('select * from users where username=:username'); $stmt->bindParam(':username', $username); $stmt->execute(); } catch(PDOException $e) { die("Database error. " . $e->getMessage()); } $row = $stmt->fetch(); $salt = $row['salt']; $password = $row['password']; $decrypted_password = decrypt(base64_decode($password), $salt); if ( $userpassowrd == $decrypted_password) { $login_ok = true; } } if(isset($errMSG)) echo "<script>alert('$errMSG')</script>"; if ($login_ok){ if ($row['activate']==0) echo "<script>alert('$username 계정 활성이 안되었습니다. 관리자에게 문의하세요.')</script>"; else{ session_regenerate_id(); $_SESSION['user_id'] = $username; $_SESSION['is_admin'] = $row['is_admin']; if ($username=='admin' && $row['is_admin']==1 ) header('location:admin.php'); else header('location:welcome.php'); session_write_close(); } } else{ echo "<script>alert('$username 인증 오류')</script>"; } } ?>
-
미해결비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
mysql connection 오류
안녕하세요, 강의 잘 듣고 있습니다. 다름이 아니라 강의를 듣는 도중에 Mysql과 연결이 되지 않아서 도움을 구하고자 합니다. Workbench에서 Test Connection을 누르면 계속 could not connect to mysql at "주소" ~ 이렇게 뜨게 됩니다. Vi 편집기를 통해서 Error Log를 확인했는데도 Timestamp가 잘못 설정되어 있다는 에러밖에 확인하지 못했습니다. 그래서 이게 Mysql이 안켜진건가 해서 Putty에서 Mysql을 실행 시키고 접속을 해도 계속 Connection이 안됩니다. Configure Server Management를 해야하나 고민해봤는데 이걸 하면 가상 리눅스환경에 mysql을 연결하는게 아니라 Window 운영체제 자체의 mysql을 연결하는거니 이건 아닌거 같고 지금 요 연결때문에 구글링만 일주일째 하고 있는데 안되고 있습니다. mysql에 문제가 있는건가 싶어 Select host from mysql.user을 해도 % 로 나와 있는 root가 잘 출력 되고, putty에서 netstat -ntlp를 해도 :::3306으로 잘 돌아가고 있는것 같습니다. EC2 주소랑 인바운드 규칙도 잘 설정이 되어 있는 상태인데 더이상 진행이 되지 않습니다. 혹시 해결 방법을 아실까요?
-
해결됨비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
jwtsecretkey
안녕하세요 jwtsecretkey 관련하여 질문드립니다. jwtsecretkey는 강의에 나와있는대로 그대로 사용했고, host는 AWS EC2에 명시된 퍼블릭 IP주소, User명에는 mysql 사용자명, port는 3306, password는 mysql 접속 시 비밀번호, 그리고 사용할 database명까지 입력을 해주었으나 localhost로 접속 시, Cannot get이라는 창만 계속해서 뜹니다. 혹시 이런경우에는 jwtsecretkey를 제것을 따로 생성하지 않아서 발생하는 문제인지 알고 싶습니다. 만약 jwtsecretkey의 문제라면 어떻게 생성하면되는지 알려주시면 감사하겠습니다.
-
미해결갖고노는 MySQL 데이터베이스 by 얄코
안녕하세요 강의 구성 관련 질문
질문은 강의페이지에 안내해놓은 이메일로 보내주세요!(이 페이지에 질문 X) SELECT 기초 를 다 학습하고 다음 Chapter 를 학습할려고 합니다. 기초에 나와있는 함수들을 예시 코드와 함께 한 페이지 정리된 PAGE가 있으면 좋겠습니다. 말씀하신대로 이 기초 함수들은 다 외울 필요 없이, 프로그래밍 언어처럼 구글링 하여 필요할 때 찾으면 되는 건가요??
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
api추가 질문입니다
api 추가 질문입니다. router.get('/search/:hashtag', async (req, res, next) => { try { const result = await request( req, `/posts/hashtag/${encodeURIComponent(req.params.hashtag)}`,// 문자를 UTF-8로 인코딩 ); res.json(result.data); } catch (error) { if (error.code) { console.error(error); next(error); } } }); 이 코드에서 :hashtag는 인코드 되어서 request함수에 넣었습니다. router.get('/posts/hashtag/:title', verifyToken, async (req, res) => { try { const hashtag = await Hashtag.findOne({ where: { title: req.params.title } }); if (!hashtag) { return res.status(404).json({ code: 404, message: '검색 결과가 없습니다', }); } const posts = await hashtag.getPosts(); return res.json({ code: 200, payload: posts, }); } catch (error) { console.error(error); return res.status(500).json({ code: 500, message: '서버 에러', }); } }); request함수는 헤더의 authorization에 토큰을 넣어서 이 라우터에 요청합니다. 그렇다면 이 코드의 :title 속성은 인코드된 문자열이지 않나요? Hashtag모델에 인코드된 문자열이 저장되는 것도 아니던데 왜 인코드된 문자열을 다시 디코드하지 않나요? const posts = await hashtag.getPosts(); return res.json({ code: 200, payload: posts, }); 또 Post에 있는 hashtag를 가져와 posts에 넣어서 json형식으로 출력했더니 이런 형태의 데이터가 나왔는데 Post모델에서 조건에 맞는 hashtag를 가져온것은 이해 했습니다. 그러나 PostHashtag테이블과 UserId컬럼은 왜 가져온것인가요? 혹시 관계 메서드 add set remove get에 대해 정확히 어떠한 인과관계가 나타는지 설명해주실수 있나요? 대충 느낌은 오지만 긴가민가 합니다 ㅜㅜ
-
미해결비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
db 연결 후, "/dummy" 요청 시 결과 페이지
안녕하세요? 또 한번 문의 드립니다ㅜㅠ (지난 번 AWS는 아직 해결을 못했습니다. 일단 패스하고 다른 강의부터 듣고 있습니다) mysql 연동 후, 쿼리 작성하고, 서버 띄운 후 결과가 선생님의 페이지 양식과 조금 달라서 이점이 조금 의아합니다. 선생님 결과는 아래와 같이 나오는데, 제 결과는 이렇게 나옵니다. 내용 상에는 차이가 없지만, 선생님 처럼 가독성 좋게 출력이 안되는데요. 이유가 뭔지, 수정할 수 있는지 여쭙고 싶습니다! 오늘도 감사드립니다. 좋은 하루 되세요!
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
TypeORM + Mysql관련 질문
NestJS + TypeOrm을 통해서 데이터베이스(mysql)에 데이터를 Insert하는데 있어 질문 드립니다 (구글링을 해보았지만 TypeOrm의 업데이트가 되서 안먹히는건지, 제가 방법을 잘못활용하고 있는건지 모르겠습니다 / 공식문서대로 해봐도 안되네요 ㅜㅠ) 하고자 하는것 데이터 Insert시 CreatedAt과 UpdatedAt을 자동적으로 같이 입력되도록 하는것 문제점 둘다 null값으로 입력됨 3. 파일 group.ts -> typeorm의 entity파일 @Entity 데코레이터로 정의 4. 시도해본 것 공식문서 @CreateDataColumn() => null로 나옴 @CreateDataColumn({default() => CURRENT_TIMESTAMP(6)}) @Column({{default() => CURRENT_TIMESTAMP(6)}) => null로 나옴 default: Date.now() => null로 나옴 createdAt의 타입문제인가싶어 타입도 any로 해서 진행해봄 아래는 필요한 소스코드 일부를 발췌했습니다 ================= import { BaseEntity, Column, CreateDateColumn, Entity, Index, JoinColumn, ManyToOne, OneToMany, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; import { Appliers } from './Appliers'; import { Comments } from './Comments'; import { Users } from './Users'; @Index('FK_Users_TO_Groups_1', ['userId'], {}) @Entity('Groups', { schema: 'erunjrun' }) export class Groups extends BaseEntity { @CreateDateColumn() createdAt: any; }
-
미해결누구나 따라하면서 배우는 JSP 커뮤니티 게시판 만들기
db error
Access denied for user 'root'@'localhost' (using password: YES) 라는 문구가 계속 나오면서 login.jsp를 실행하면 항상 database 오류가 납니다.. 찾아보니까 다른 버전이라 오류가 난다고 하는데 어떻게 고쳐야 할지 모르겠습니다
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
마지막 쓰레드는 range를 따로 계산하신 이유가 있나요?
threads.add(new Worker(__filename, { workerData: { start, range: range + ((max - min + 1) % threadCount) } })); for문에서 threadCount - 1 안 하고 threadCount 까지 반복하면 안 되는 이유가 있는지 궁금합니다. 마지막에 따로 빼면 range가 10000007까지로 되는거 같아서요.
-
미해결DATABASE 1&2 - MySQL
MariaDB
WAMP를 설치하고 보면 mysql이 아닌 mariaDB가 깔려있어요 ㅠㅜ
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
채팅을 구현할려고할떄 테이블구조
노드버드에 채팅을 구현할려고 하는데 대충 Chat table 만들고 User 랑 관계정의 시켜서 테이블 쭉 쌓으면 될것같은데 모든 채팅 정보가 한테이블에 있으면 나중에 규모가 커진다고 가정했을때 시간이 오래걸리것같습니다. 아무리 sql이 조회가 빠르다해도 채팅의 경우 다른 Post 나 User 테이블보다 훨씬 많이 쌓일테고 유저 개개인의 채팅한 정보가 한곳에 모이다보니 A 와 B 채팅 정보를 가져오는데 모든 사람의 테이블을 다 조회하면 시간이 오래걸릴것같은데 이런경우는 어떻게 처리하는게 좋을까요? 채팅부분만 mongo 써야될까요?
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
fs.readFile 호출시 readFile 도 background 로 보내는 건가요?
const fs = require('fs') fs.readFile('/Users/joe/test.txt', 'utf8' , (err, data) => { if (err) { console.error(err) return } console.log(data) }) 관련 질문을 읽다가 readFile 도 background 로 간다는 뉘앙스가 느껴져서 질문해봅니다. readFile 함수 자체는 background 로 가진 않지만 파일 읽는 행위가 background 에서 진행되는 걸까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
응답에 비밀번호가 담겨있으면
그전에 요청 날릴때 비번을 해시화 하지 않는이유가 https 로 날릴경우 클라이언트에서 보낸 요청을 암호화 해서 서베에서 디비에 저장할때만 해시화 했던걸로 기억하는데 https 를 적용하면 응답되는 데이터도 암호화 되는건가요?
-
미해결[2024 리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
큰따옴표 질문입니다.
강의 13:23 import pymysql db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='funcoding', db='ecommerce', charset='utf8') cursor = db.cursor() for index in range(10): product_code = 215673140 + index + 1 sql = """INSERT INTO product VALUES( '""" + str(product_code) + """', '스위트바니 여름신상5900원~롱원피스티셔츠/긴팔/반팔', 23000, 6900, 70, 'F'); """ print (sql) cursor.execute(sql) db.commit() db.close() -------------------------------------- 13:23 에서 '""" + str(product_code) + """', '스위트바니 여름신상5900원~롱원피스티셔츠/긴팔/반팔', 23000, 6900, 70, 'F'); """ '""" + str(product_code) + """' 이부분에서 str로 이미 문자열이 되었는데 큰따움표 쓰는거랑 작은따움표를 왜 추가하신건지 궁금합니다. 그냥 'str(product_code)' 로 쓰면 안되나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의 별개의 질문이 있습니다.
안녕하세요. 스프링 입문 다 듣고 기본편을 듣고 있는 수강생입니다. 개인적으로 스프링부트로 프로젝트를 하는도중 mysql 관련해서 궁금한 점이 있어서 글을 남깁니다. 간단하게 말씀드리자면 웹에서 회원가입을 했을 경우 필수 입력사항이 아니면 db에 null 값으로 안들어가고 공백으로 들어가고 있습니다.. 아래 일반적인 테이블인데 공백으로 들어가는 부분이 생깁니다. create table test( num smallint auto_increment primary key, id varchar(200), pw varchar(200), gender varchar(10) ) 다만, 아래 코드처럼 웹사이트가 아닌 쿼리문으로 바로 실행하면 값을 입력하지 않는 컬럼은 null로 들어가고 있습니다. insert into test (id,pw) values ('test','1234'); 웹에서는 입력하지 않은 값이 null이 아닌 공백으로 들어가는지가 궁금합니다.ㅠㅠ
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
.listen
강의에서 8번째 줄에 그냥 .listen이 이해가 가질 않습니다. 보통 .이면 메소드?를 불러오는건데 어떤놈의 메소드(함수)인지 궁금합니다
-
미해결따라하며 배우는 리액트, 파이어베이스 - 채팅 어플리케이션 만들기[2023.12 리뉴얼]
[강의질문] 안녕하세요 John Ahn님 질문이 하나 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 John Ahn님 반갑습니다! 혹시 채팅방 어플리케이션에서 라디오 박스를 만들어서 설문조사 할 수 있게 만들 수도 있을까요? 제가 한 번 만들어 보고 싶은데 DB 저장에서 이것 저것 해보다가 MongoDB에도 적용해보고, MySQL에도 적용을 해보고 여러 가지를 시도를 해보았는데 제가 끝맺음이 제대로 안되어서 제대로 마치고 싶습니다ㅎㅎ.. 라디오 박스를 해서 설문조사 처럼 만들어보고 싶은데 배울 수 있을만한 John Ahn님 강의가 있을까요? 감사합니다!!