2011-10-18 3 views
0

열 이름으로 PHP의 md5(microtime()) 결과를 사용하여 테이블을 만들 때 구문 오류가 발생합니다. 특히열 이름으로 MySQL 해시 값

이 오류가 **와 함께 부분에 던져지고 것은 주변 : 그것은하지 다른 두 해시 값 이전에 그것을 그 자리에 던져되고 왜 나를 혼란 무엇

CREATE TABLE form_data_38 (
    id   INT SIGNED auto_increment NOT NULL, 
    rltd_pri_key INT SIGNED NULL, 
    0accc77c084cc74a51dee479f8d095e3 TEXT(65535) NOT NULL, 
    **092e60b78f7804e86ea9a6e83701a929 TEXT(65535) NOT NULL**, 
    6734131796201537410e4d43635bf1b3 TEXT(65535) NULL, 
    PRIMARY KEY (id) 
) TYPE=InnoDB; 

입니다 . 나는 열 이름에 'a'를 추가했고 테이블을 아무 문제없이 만들었다. 나는 MySQL 명명 규칙을 조사해 왔으며 지금까지 아무 것도 생각해 내지 못했다. '_'및 '$'를 모두 사용하는 것이 좋으며,이 경우에는 괜찮을 것입니다.

무엇이 누락 되었습니까?

+0

내가이 다른 해시 값으로 이전에 근무하고 있음을 알아 두셔야합니다. –

+0

답변을 찾은 경우 답변으로 게시하십시오. 아직 충분한 담당자가 없다면 SO에 계속 기부함으로써 이익을 얻을 수 있습니다. 감사합니다 –

+1

왜이 세상에서 열 이름을 사용 하시겠습니까?! –

답변

1

는 역 인용 부호에 테이블과 필드 이름을 넣어 : `09e4_fieldName`을, 적어도 이러한 문제를 만들 수 있습니다 사람들을 위해 :

CREATE TABLE form_data_38 
    (id INT SIGNED auto_increment NOT NULL 
    , rltd_pri_key INT SIGNED NULL 
    , `0accc77c084cc74a51dee479f8d095e3` TEXT(65535) NOT NULL 
    , `092e60b78f7804e86ea9a6e83701a929` TEXT(65535) NOT NULL 
    , `6734131796201537410e4d43635bf1b3` TEXT(65535) NULL 
    , PRIMARY KEY (id) 
) 
ENGINE = InnoDB ;     --- ENGINE, not TYPE 
+0

기본 이슈는 열 이름이 과학 표기법으로 렌더링 되었기 때문에 결국 'e ##'이 (092 ** e60 ** b78f7804 ** e86 ** ea9a6e83701a929) 있었기 때문입니다. 역 따옴표 (또는 공급자 별 따옴표가 필요함)의 열 이름을 포함하면 축약 된 이름이 전달되고 분석되지 않습니다. –