const productInfo_sql =()=>{
return(
'INSERT INTO product (product_no,name,explain,creater,date,likes,type,
total_qty,leftover,symbol,contractAddr,tokenURI) VALUES(?,?,?,?,?,0,?,?,?,?,NULL,NULL)'
)
}
쿼리문을 작성할 때 이런식으로 쿼리문을 작성하니 오류가 났음.
why? 맨 앞에 있는 테이블 명인 name이 예약어이기 때문.
* 예약어란?
예약어(豫約語, 영어: reserved word)는 컴퓨터 프로그래밍 언어에서 이미 문법적인 용도로
사용되고 있기 때문에 식별자로 사용할 수 없는 단어들이다.
예를 들어 C에서 return은 변수명이나 함수명으로 사용할 수 없다. 그런 단어들은 키워드이다.
디비 스키마를 짤때 테이블명을 예약어가 아닌걸로 처음부터 정하는게 가장 나은 방법이었겠지만,
이미 다른 부분들에서 쿼리문을 다 짜놓으셨기 때문에
그 전체를 수정하기보단 내가 짠 쿼리문이 일단 정상적으로 돌아가도록 임시방편으로 작성한 것이다.
내가 쿼리문을 썼던 방식은 백틱 안에 insert문을 입력했었기 때문에 그 안에 큰 따옴표를 넣을 수가 없었다.
작은 따옴표는 입력이 가능하지만 이걸로 예약어를 감싸도 쿼리문 실행이 되지 않았고,
백틱 안에서는 백틱을 다시 쓰는것도 불가능 했음.
💙 해결방법 💙
테이블명에 ` ` (백틱) 을 붙여주고 백틱마다 그 앞에 \ (대쉬)를 붙여준다.
'INSERT INTO product (\`product_no\`,\`name\`,\`explain\`,creater,\`date\`,likes,\`type\`,total_qty,leftover,symbol,contractAddr,tokenURI) VALUES(?,?,?,?,?,0,?,?,?,?,NULL,NULL)'
주의할 점 : 길다고 줄바꿈하면 안됨. 인식 못함
반응형
'자잘오류 ◾ 자잘팁 ◾ 유용도구' 카테고리의 다른 글
[macOS] homebrew 를 이용한 mariaDB 설치 / 일반 사용자로 root 권한 열기 (0) | 2022.02.15 |
---|---|
[Mac OS][Node] npm Error: EACCES: permission denied, access '/usr/local/lib/node_modules' / npm install 에러 (3) | 2022.02.09 |
[1118]unknown column in 'field list' (0) | 2021.11.19 |
Trello - 웹기반 프로젝트 관리 툴 (0) | 2021.11.13 |
window 화면 캡쳐하기 단축키 (0) | 2021.10.26 |