2017-11-07 16 views
0

10.1.28 - MariaDB보이저 데이터베이스 및 MariaDB 서버

내가 보이저 관리자 패널에서 새 테이블을 만들려고하지만 난이 오류가 계속 :

generic.exception: An exception occurred while executing 'CREATE TABLE newReport (id INT UNSIGNED AUTO_INCREMENT NOT NULL, owner_id INT DEFAULT NULL, title VARCHAR(166) DEFAULT NULL, description text DEFAULT NULL, report json DEFAULT NULL, created_at timestamp null DEFAULT NULL, updated_at timestamp null DEFAULT NULL, deleted_at timestamp null DEFAULT NULL, INDEX newreport_owner_id_index (owner_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB': SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'json DEFAULT NULL, created_at timestamp null DEFAULT NULL, updated_at timestamp ' at line 1

또는 일부 변형을 내가 시도하는 것에 따라 SQL 구문 오류이 발생합니다.

나는 XAMPP을 사용하고 있는데 내가이 MariaDB 서버를 사용해야 않는 MariaDB 서버를 설치하지 않은? 아니면 내 문제가 뭔가?

screenshot of the table

제가 오류된다 JSON 데이터 유형 제거하면 다음 JSON MySQL의 데이터 형식이 5.7에서 도입 된

generic.exception: An exception occurred while executing 'CREATE TABLE newReport (id INT UNSIGNED AUTO_INCREMENT NOT NULL, owner_id INT DEFAULT NULL, title VARCHAR(166) NOT NULL, description text NOT NULL, report text NOT NULL, created_at timestamp DEFAULT 'CURRENT_DATE', updated_at timestamp null DEFAULT NULL, deleted_at timestamp null DEFAULT NULL, INDEX newreport_owner_id_index (owner_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB': SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'created_at'

+0

중복 가능성이 있습니다. 이것이 도움이되는지 확인하십시오. https://stackoverflow.com/questions/42425667/mariadb-json-support-in-laravel?rq=1 –

+0

내가 json coulomb을 제거하면 나는 여전히 "json DEFAULT NULL"부분을 사용하지 않는다. 내 문제가 특별히 json 데이터 유형과 관련 있다고 생각하지 마십시오 – crffty

+0

'Create Table' 문을 게시 할 수 있습니까? 볼 수 없어요. –

답변

0

한다.

이 데이터 타입은 MySQL의 이전 버전 (5.6 또는 이전 버전)에서 사용할 수 없습니다, 아직 MariaDB에서 구현되지 않은 (적어도 버전 10.2까지하지만, MariaDB는 일부 JSON 기능 JSON_VALID을 예 추가했습니다.)

편집

MariaDB 버전에 JSON 데이터 형식에 대한 지원을 추가 10.2.7

https://mariadb.com/kb/en/library/json-data-type/


당신은 예를 들어 지원 당신이 알고있는 다른 데이터 유형으로 JSON 데이터 유형을 대체 할 수있는 테스트로

SHOW VARIABLES LIKE 'version' 

:

는 연결되어있는 MySQL은/​​MariaDB 서버의 버전을 확인합니다. VARCHAR(20) 또는 TEXT.

MySQL/MariaDB 서버에서 json 데이터 유형이 지원되지 않으면 다른 텍스트 유형을 사용할 수 있습니다. 오류가 'json에서 SQL 구문의 문제를 신고있는 것처럼


나에게 보인다. 이것이 유효한 데이터 유형을 찾을 수있는 곳입니다. 테스트로서의 나의 제안은 알려진 좋은 데이터 유형으로 대체하는 것이 문제인지 여부를 결정하기위한 것입니다.오류 메시지에서

는, 서버는 우리가 실행중인 문을 참조하십시오 MariaDB (안 MySQL의)


것으로 나타납니다

CREATE TABLE newReport 
(id   INT UNSIGNED AUTO_INCREMENT NOT NULL 
, owner_id INT DEFAULT NULL 
, title  VARCHAR(166) DEFAULT NULL 
, description text DEFAULT NULL 
, report  json DEFAULT NULL 
, created_at timestamp null DEFAULT NULL 
, updated_at timestamp null DEFAULT NULL 
, deleted_at timestamp null DEFAULT NULL 
, INDEX newreport_owner_id_index (owner_id) 
, PRIMARY KEY(id) 
) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci 
ENGINE = InnoDB 

그리고 오류

: SQLSTATE[42000]: 
Syntax error or access violation: 
    1064 You have an error in your SQL syntax; 
    check the manual that corresponds to your 
    MariaDB server version for the right syntax to use near 

및 오류가 신고 된 곳

에서 구문 오류 문에 무엇 때문에 textjson
'json DEFAULT NULL ... 

편집

교체,

1067 Invalid default value for 'created_at' 

이상한 보이는

에 오류를 변경했다

created_at timestamp null DEFAULT NULL 
            ^^^^ 

그것은 일한 것,하지만 지금

created_at timestamp null DEFAULT 'CURRENT_DATE' 
            ^^^^^^^^^^^^^^ 

그 문자열 값 'CURRENT_DATE'으로 변경됩니다 어떤 이유로 타임 스탬프에 대한 유효한 값이 아닙니다. 문자열 리터럴이 아닌 CURRENT_TIMESTAMP이라는 키워드를 참조한 것 같습니다.

created_at timestamp null DEFAULT CURRENT_TIMESTAMP 
            ^^^^^^^^^^^^^^^^^ 
+0

문자열 리터럴 'DEFAULT'CURRENT_DATE '는 TIMESTAMP 데이터 유형에 유효하지 않습니다. 어쩌면 당신은'DEFAULT CURRENT_TIMESTAMP'을 의미했을 것입니다. (키워드 주위에 작은 따옴표가 없으므로 작은 따옴표는 문자열 리터럴을 묶는 데 사용됩니다) – spencer7593

+0

"CURRENT_TIMESTAMP"는 여전히 오류를 쫓아 냄으로써 다시 null로 돌아가며 작동합니다. 감사합니다. – crffty