반응형


C++ 코드로 MySQL DB와 연동하여 일련의 작업을 하는 프로그램을 제작중에 있다.


테스트 하면 워낙에 해괴망측한 이유로 에러를 뿜어내며 프로그램이 죽어대지만 이번 오류는 좀 기록을 해놔야 다음에 까먹어도 찾아볼수 있을것 같아 기록해 둔다.


보통 String 타입으로 쿼리문을 작성하여 C++ 소스코드 안에 적용해놓고 그 String 문자열 대로 쿼리문을 적용하는게 가장 일반적이다.


오라클 과는 다르게 왠지 모르게 간편한 MySQL을 선호하는 편인데 작업 도중 아래와 같은 오류를 만나게 되었다.



Column: 'Column_Name' in where clause is ambiguous 


생전 처음 만나보는 에러라서 해결방법이 막막했는데 의외로 구글링 하네 쉽게 나왔다.


문제가 되던 컬럼이 어느 테이블의 컬럼이냐를 제대로 지정안해줬기 때문에 생겨난 아주 기초적인 실수였다...



예를 들어 id라는 컬럼이 있는데 이것이 Table A에도 존재하고 Table B에도 존재한다면


당연히 쿼리에는 A.id 라던가 B.id 라고 확실히 지정을 해줘야 한다.


그런데 나 같은 경우는 예를 들어 아래의 쿼리를 실행했다.




SELECT * FROM A,B WHERE id = 10




이렇게 되면 WHERE 뒤에 있는 id가 A에서 온 id인지 B에서 온 id 인지 정확히 알수가 없어 해당 에러를 내뿜게 되는 것이다.


정작 FROM 으로 A와 B 테이블 모두 불러와놓고 이런 기초적인 실수나 하다니....


요즘 일이 많고 야근하다보니 머리가 어떻게 된것 같다. 가끔은 머리 좀 쉬어가면서 해야겠다.

+ Recent posts