수고 많으십니다.
다음과 같은 오류 메시지를 개선한다면, 큐브리드가 사용자에게 좀 더 다가갈 듯 합니다.
1. CREATE 시, 데이터 타입이 빠진 경우.
CREATE TABLE a
( a int, b, c int ) ;
-----------------------------------------------------------------------------------
1). CUBRID (iBatis + JAVA의 에러 메시지입니다.)
cubrid.jdbc.driver.CUBRIDException: Syntax: please check syntax at \',\', expecting { data type } in type declaration clause.
2). MySQL
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \' c int )\' at line 1
3). SQL Server
정확히 기억은 안나고, \'b에는 데이터 형식이 필요합니다.\'와 같은 오류 메시지가 출력되었습니다.
----------------------------------------------------------------------------------
실수를 한 제가 잘못이지만, 컬럼 개수가 많을 때를 대비하여 어디쯤에서 에러가 났는지 알면 좋겠습니다. sqlx에서는 라인 번호, 컬럼 번호까지 나오고, CM에서는 라인 번호까지는 나오지만, iBatis+JAVA로 개발한 경우에는 위의 메시지만 나오네요.(iBatis의 경우 xml에 쿼리를 아무리 이쁘게 적어놔도 실제 실행할 때는 1줄로 전송되기 때문에 라인 번호가 출력되는 건 별 도움이 안 됩니다.)
2. unique constraint violations
1) CUBRID
cubrid.jdbc.driver.CUBRIDException: Operation would have caused one or more unique constraint violations.
어떤 제약사항의 어떤 값으로 충돌되는지 정보가 없으므로 디버깅이 좀 어렵습니다.
2) MySQL
ERROR 1062 (23000): Duplicate entry \'10\' for key 1
중복되는 contraint가 어떤 것인지와 어떤 값이 중복된 것인지 출력됩니다.
3) Sql Server
\"PRIMARY KEY 제약 조건 \'PK__test__023D5A04\'을(를) 위반했습니다. 개체 \'dbo.test\'에 중복 키를 삽입할 수 없습니다.\"
constraint의 이름까진 출력이 되네요.
건 by 건으로 INSERT하는 거라면 app.에서 디버깅이 쉽겠지만, INSERT INTO SELECT로 INSERT할 때는 다시 SELECT 부분만 가져다가 GROUP BY HAVING을 다시 실행해서 중복되는 값을 찾아야 하고 조금은 번거롭군요.
감사합니다.
좋은 한주 되세요.
|