'예약어'에 해당되는 글 2건

  1. 2012.03.16 MySQL `와 '의 차이
  2. 2010.11.25 MS Access SQL 예약어 1

MySQL을 쓰다가 아무 생각없이 칼럼이름을 order로 지었다.

뭐 잘 되겠지 싶었느네

INSERT INTO table_name(order, ... ,) VALUES(0, ... , )
이렇게 넣으니 order행에서 에러가 나는 것이어다

그래서 나는 이 부분을

INSERT INTO 'shcema_name'.'table_name'('order', ... ) VALUES(0, ... ,)

같은 식을 처리했는데 같은 에러가 계속 나는 것이다

그래서 MySQL Workbench tool을 이용해서 같은 데이터를 Edit Tableㅇ르 이용해서 값을 삽입해봤다.

그랬더니 INSERT INTO `schema_name`.`table_name`(`order, ...)

이런식으로 작성되는 것이다.

위의 것은 홀따옴표(엔터 옆의 그것) 이고 아래 것은 1 옆에 있는 그것이다.

그런데 저렇게 수정하니 잘 되는 것이 아닌가 -_-...

결론은..

스키마 이름이나 칼럼 네임은 `으로 묶어야 하고 뒤의 데이터는 '으로 묶어야 한다는 이야기..

오늘의 삽질 하나 끝~
Posted by TY
,


 며칠 전에 디버깅을 하는데, 자꾸 INSERT 구분에서 에러가 난다는 겁니다. 엑서스 상에서 직접 쿼리를 실행해보면 되고, ODBC를 통해서 사용하면 INSERT INTO 구문 에러라며 Exception이 자꾸 발생하는데...
 
뭐 행이 다발로 있는 것도 아닌데, INSERT 구문 같이 사소한 구문이 자꾸 안되니까 이거 어이도 없고, 화도 나고 하더군요.그래서 어떻게 할까 하다가 엑서스에서 실행을 해본 후 쿼리 디자인을 다시 살펴보기로 했습니다. 뭐가 바뀌었는지 처음에는 못 깨달았는데, 자세히 보니 이런게 다르더군요.

예를 들어서,

원래 쿼리 ) INSERT INTO t_table(file,attrib,action) VALUES("0",707,3)
엑서스 쿼리) INSERT INTO t_table(file,attrib,[action]) VALUES("0",707,3)

이렇게 되는거에요.

그래서 []는 왜 붙지? 라고 심각히 고민을 했어요.

아마도 예약어겠지, 라고 싶었는데 mdb 예약어는 아닌거 같더라구요.

이상하다 싶었는데, 인터넷을 할 수 있게 된 짬을 이용해서 찾아보니 Jet 4.0 예약어더군요.

Jet 4.0 예약어는 아래를 참고해보세요. [MSDN]
http://support.microsoft.com/kb/248738/ko

이건 Access 2002 이상에서의 예약어에요. [MSDN]
http://support.microsoft.com/kb/286335/ko

원래대로라면 예약어를 피해서 적는게 맞지만, 그래도 어쩔 수 없을 경우에는 []를 붙여주면 되는 것 같네요.


Posted by TY
,