2013-05-13 2 views
0

메모리 내 데이터베이스를 사용하여 PHPUnit으로 설정된 테스트 스크립트를 얻으려고하고 있지만 데이터베이스를 올바르게 작성하는 데 문제가 있습니다. . 처음 쿼리를 실행했을 때 제대로 실행되었지만 AUTO_INCREMENT를 ID 필드에 추가하는 것을 잊어 버렸습니다. 일단 스크립트를 실행하면 PDO가 치명적인 오류로 중단됩니다. 나는 phpMyAdmin을 통해 동일한 쿼리를 실행하여 작동하는지 (어떤 불만도없이 통과하는지) 확인하고 심지어 원하는 작업을 수행하기 위해 그것을 사용하여 행운없이 도는 SQL을 복사 했으므로 무슨 일이 일어나고 있는지에 대한 손실. 누구든지 이걸 가지고 나에게 손을 줄 수 있다면 큰 도움이 될거야. 쿼리AUTO_INCREMENT가 생성 스크립트에 포함되어 있지만 쿼리가 유효 할 때 PDO 쿼리가 실행되지 않습니다.

CREATE TABLE IF NOT EXISTS `checks` (
    `id` int(60) NOT NULL AUTO_INCREMENT, 
    `check_type` varchar(255), 
    `purchase_id` varchar(255), 
    `price` varchar(255), 
    `time` varchar(255), 
    `user_id` varchar(255), 
    `email` varchar(255), 
    `site_id` varchar(255), 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

아래에서 찾을 수 있습니다 VARCHAR의 자동화 된 스크립트를 통해 그 때문에 실행하는 ID를 제외한 모든과 다를 수 있습니다 데이터 유형에 사용됩니다. 차이가 나는 경우 MySQL 데이터베이스입니다. 당신이

편집을 줄 수있는 모든 도움을 주셔서 감사합니다 : 요청에 따라 전체 오류 메시지를 추가 :

SQLSTATE[HY000]: General error: 1 near "AUTO_INCREMENT": syntax error

+1

필자는 MySQL 5.5.30에 대해 PDO를 통해 CREATE TABLE을 테스트했습니다. 그것은 잘 작동합니다. 질문을 편집하고 전체 오류 메시지가 있으면 포함시켜야합니다. –

+0

일반 문법 오류 메시지 일뿐입니다. – SolidSquid

+1

mysql 클라이언트에서 쿼리를 임시로 실행하거나 PDO를 통해 실행할 때 내 테스트에서 오류가 발생하지 않습니다. AUTO_INCREMENT = 1 테이블 옵션을 제거하려고 시도 했습니까? 나는. 새로운 CREATE TABLE은 기본적으로 자동 증가를 1로 설정합니다. –

답변

0

내가 PDO를 사용하여 전환 때이 같은 일을 얻고 있었다. id 필드에서 NOT NULL을 제거하십시오. 나는 이유를 모른다. .. 어떤 문서도 보지 마라.

CREATE TABLE IF NOT EXISTS `checks` (
    `id` int(60) AUTO_INCREMENT, 
    `check_type` varchar(255), 
    `purchase_id` varchar(255), 
    `price` varchar(255), 
    `time` varchar(255), 
    `user_id` varchar(255), 
    `email` varchar(255), 
    `site_id` varchar(255), 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 
관련 문제