월: 2016 12월

MySQL PK Constraint symbol

http://dev.mysql.com/doc/refman/5.6/en/create-table.html
MySQL CREATE TABLE 레퍼런스에 보면 PK 도 임의의 이름을 가질 수 있을 것 처럼 해놓음

create_definition:
    col_name column_definition
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)
      [index_option] ...

symbol 로 표현할 수 있는데, syntax error 는 발생하지 않지만 I_S 어디에서도 찾을 수 없음
아마 KEY 선언 시 DESC 과 같은 순서 지정이 무시discard 되는 것처럼 요것도 그런게 아닐까 함
레퍼에는 또 친절하게 다음과 같이 쓰여있음- _-)..

  • In MySQL, the name of a PRIMARY KEY is PRIMARY. For other indexes, if you do not assign a name, the index is assigned the same name as the first indexed column, with an optional suffix (_2, _3, ...) to make it unique. You can see index names for a table using SHOW INDEX FROM tbl_name.

DML Explain Bug

MySQL 5.6 에서부터 DML구문에 대한 실행계획 조회가 가능
https://dev.mysql.com/doc/refman/5.6/en/explain.html

하지만 readonly 서버로 설정이 되어있을 때 ERROR:1290 – The MySQL server is running with the –read-only option so it cannot execute this statement 에러가 발생함

DML Explain 시 com_delete, com_update 등 엔진 내부의 커맨드 수행 카운터가 올라가는 것으로 보아 추측컨데 DB에서 DML 쿼리가 수행(explain 시 반영되지 않음)될 때 서버옵션인 readonly 체크가 사전 동작해서 explain 이 막히는 것 같음

MySQL 버그리포트에 확인됨verified 상태로 오픈되어있으며 MySQL 5.7 에서도 동일 문제 발생하는 것을 확인

Non-critical 레벨로 버그에 대한 이제까지의 오라클의 행태?로 봐서는 언제 fix 될지 의문임
https://bugs.mysql.com/bug.php?id=73258

쿼리를 SELECT 로 바꿔서 참고 해야할 듯