mariadb 10.2 잘못된게 없는거 같은데 insert 가 안되네요 고수님 도와주세요 0 3 984

by 맛동산 [SQL Query] [2018.05.24 17:44:33]


CREATE TABLE IF NOT EXISTS `disks` (

  `DISK` varchar(18) NOT NULL ,

  `REGTIME` datetime NOT NULL ,

  `TOTAL_TB` float(5,1) DEFAULT NULL ,

  PRIMARY KEY (`DISK`,`REGTIME`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

=======================================

CREATE TABLE IF NOT EXISTS `partitions` (

  `DISK` varchar(18) NOT NULL ,

  `REGTIME` datetime NOT NULL ,

  `PARTITION` varchar(36) NOT NULL ,

  `USED_TB` float(5,1) DEFAULT NULL ,

  PRIMARY KEY (`DISK`,`REGTIME`,`PARTITION`),

  CONSTRAINT `FK_DISKS_TO_PARTITIONS` FOREIGN KEY (`DISK`, `REGTIME`) REFERENCES `disks` (`DISK`, `REGTIME`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

 

 

우선 저 위에 테이블을 생성은 문제 없이 됩니다.

disks라는 테이블에는 정상적으로 insert 작업이 완료 됩니다.

insert into disks (disk,regtime,total_tb) values ('vol1','2018-05-24 00:00:15',123);  # 되는 거 확인

 

partitions 이라는 테이블에는 insert가 안됩니다.

insert  into  partitions  (disk, regtime, partition, used_tb)  values ('vol1','2018-05-24 00:00:15','user',0.001);

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'partition, used_tb)  values ('vol1','2018-05-24 00:00:15',"user",0.001)' at line 1

이런 에러가 나면서 안되구요

싱글 쿼테이션 마크, 더블 쿼네이션 마크 다 해봈는데 안된에요 

한줄 한줄씩 뛰어서 해보면 line 6이라고 partition 칼럼에서 문제 인거 같은데 어떻게 해면 insert 작업이 될까요??

by 마농 [2018.05.24 17:58:49]

예약어를 명칭으로 사용하는 것을 지양해야 합니다. partition 이 문제인 듯 하네요.
이름을 바꾸거나 (partition_cd) 따옴표와 함께 사용(`PARTITION`, "PARTITION") 하셔야 합니다.
이름 바꾸는 거 추천합니다.


by 맛동산 [2018.05.24 21:50:49]

컬럼이름을 partition_cd로 바꾸니깐 되네요 

궁금한게 있는데요 테이블 명은 partitions 이고 컬럼명이 PARTITION 이름이 다른데 왜 안되는거였죠??

예약어를 명칭으로 사용하는 것을 지양해야 합니다. -< 이말씀이 잘 이해가 안되서요 ㅠㅠ


by 마농 [2018.05.25 08:12:03]

예약어는 명령어로 사용되는 단어들입니다.
SELECT FROM WHERE 등등
테이블명 컬럼명 등의 명칭을 예약어로 만들면
쿼리 해석할 때 이게 예약어인지? 컬럼명인지 모호해 집니다.
예를 들어 테이블명을 FROM 이라고 만들고 컬럼명을 SELECT 라고 만들면
SELECT select FROM from; 쿼리가 이런식이 되겠네요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입