MySQL MySQL 예약어를 필드명 사용시 에러문제
페이지 정보
본문
MySQL 데이타베이스에서 사용하는 예약어는 테이블명 혹은 필드명으로 사용시 에러메시지가 출력하면서 쿼리값을 가져올 수 없습니다
필드명으로 사용할때 MySQL 하위버전일때는 문제가 없다가, 상위버전에서는 문제가 생길수 있습니다
MySQL 예약어 : https://www.happyjung.com/lecture/3036
정상출력 MySQL
서버 버전: 5.7.23-log - MySQL Community Server (GPL)
서버 문자셋: UTF-8 Unicode (utf8)
에러뜨는 MySQL
서버 버전: 8.0.27 - MySQL Community Server - GPL
서버 문자셋: UTF-8 Unicode (utf8mb4)
예1> div (예약어) 필드명
select * from 테이블명 where div = '필드값'
select * from `테이블명` where `div` = '필드값'
필드명을 `` 로 묶어주면 에러없이 결과값이 표시됩니다
예2> 테이블 생성
CREATE TABLE g5_table (
rank varchar(2) NOT NULL default '',
day int(11) NOT NULL default '0',
datetime datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
KEY id (mb_id,day,datetime)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
#1064 - 'SQL 구문에 오류가 있습니다.' 에러 같읍니다. ('rank varchar(2) NOT NULL default '',
day int(11) NOT NULL default '0',
dat' 명령어 라인 2)
rank 는 MySQL 8.02 에서 추가되었고 ,
day 는 MySQL 5.6 에서 예약어로 추가되었습니다
예2 - 수정후
CREATE TABLE g5_table (
`rank` varchar(2) NOT NULL default '',
`day` int(11) NOT NULL default '0',
`datetime` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
KEY id (mb_id,day,datetime)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
윈도우 키보드
TAB 키 위에 있는 ` 키 ( 홑따옴표 , Single quotation )를 사용
맥 키보드
영문 입력상태 : TAB 키 위에 있는 ` 키
한글 입력상태 : ⌥(option) + ~ 를 입력하면 ` 가 입력
참고자료
https://server-dev.tistory.com/189
https://knight76.tistory.com/entry/30031692700
https://clack.tistory.com/691
필드명으로 사용할때 MySQL 하위버전일때는 문제가 없다가, 상위버전에서는 문제가 생길수 있습니다
MySQL 예약어 : https://www.happyjung.com/lecture/3036
정상출력 MySQL
서버 버전: 5.7.23-log - MySQL Community Server (GPL)
서버 문자셋: UTF-8 Unicode (utf8)
에러뜨는 MySQL
서버 버전: 8.0.27 - MySQL Community Server - GPL
서버 문자셋: UTF-8 Unicode (utf8mb4)
예1> div (예약어) 필드명
select * from 테이블명 where div = '필드값'
select * from `테이블명` where `div` = '필드값'
필드명을 `` 로 묶어주면 에러없이 결과값이 표시됩니다
예2> 테이블 생성
CREATE TABLE g5_table (
rank varchar(2) NOT NULL default '',
day int(11) NOT NULL default '0',
datetime datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
KEY id (mb_id,day,datetime)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
#1064 - 'SQL 구문에 오류가 있습니다.' 에러 같읍니다. ('rank varchar(2) NOT NULL default '',
day int(11) NOT NULL default '0',
dat' 명령어 라인 2)
rank 는 MySQL 8.02 에서 추가되었고 ,
day 는 MySQL 5.6 에서 예약어로 추가되었습니다
예2 - 수정후
CREATE TABLE g5_table (
`rank` varchar(2) NOT NULL default '',
`day` int(11) NOT NULL default '0',
`datetime` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
KEY id (mb_id,day,datetime)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
윈도우 키보드
TAB 키 위에 있는 ` 키 ( 홑따옴표 , Single quotation )를 사용
맥 키보드
영문 입력상태 : TAB 키 위에 있는 ` 키
한글 입력상태 : ⌥(option) + ~ 를 입력하면 ` 가 입력
참고자료
https://server-dev.tistory.com/189
https://knight76.tistory.com/entry/30031692700
https://clack.tistory.com/691
댓글목록
등록된 댓글이 없습니다.