반응형
mysql 8.0은 이 SQL 스크립트를 실행할 수 있지만 mariaDB 5.5는 실행할 수 없고 오류: 1064(42000)
CREATE TABLE `t_test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`runningTime` bigint(20) DEFAULT '0' COMMENT 'device running time',
`firstLoginTime` varchar(255) NOT NULL DEFAULT (`date_format`(now(), '%Y-%m-%d %T')) comment 'device first login server time',
`lastLoginTime` varchar(255) NOT NULL DEFAULT (`date_format`(now(), '%Y-%m-%d %T')) comment 'device last login server time',
`lastOfflineTime` varchar(255) NOT NULL DEFAULT (`date_format`(now(), '%Y-%m-%d %T')) comment 'device last offline from server time',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
이 스크립트는 mycreate TABLE sql이며 mysql 8.0에서는 실행할 수 있지만 mariaDB 5.5에서는 실행할 수 없으며 오류:
ERROR 1064 (42000) at line 27 in file: 'initEmgrTable_rel.sql': 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 '(`date_format`(now(), '%Y-%m-%d %T')),
`lastLoginTime` varchar(255) NOT NULL D' at line 34
10.0 이전 mysql에서는 함수 또는 상수 이외의 다른 것을 사용할 수 없습니다.
봐
해당 열의 값을 지정하지 않고 행을 삽입하거나 해당 열의 DEFAULT를 지정한 경우 기본값이 사용됩니다.
MariaDB 10.2.1 이전에는 삽입 시 평가할 식을 제공하거나 함수를 제공할 수 없었습니다.대신 일정한 기본값을 제공해야 했습니다.한 가지 예외는 삽입 시 현재 타임스탬프를 사용하기 위해 TIMESTAMP 열의 기본값으로 CURRENT_TIMESTAMP를 사용할 수 있다는 것입니다.설명서의 상태로 표시
날짜 시간을 저장하고 쿼리할 때 변환
다음은 10.2 이후 mariadb에만 유효합니다.
date_format 주변의 백스틱을 제거해야 합니다.
https://dbfiddle.uk/ ?rdbms=httpadb_10.3&httpdle=d0c43ed5b5fc8e7a2332a61a31bd127d를 참조하십시오.
CREATE TABLE `t_test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`runningTime` bigint(20) DEFAULT '0' COMMENT 'device running time',
`firstLoginTime` varchar(255) NOT NULL DEFAULT (date_format(now(), '%Y-%m-%d %T')) comment 'device first login server time',
`lastLoginTime` varchar(255) NOT NULL DEFAULT (date_format(now(), '%Y-%m-%d %T')) comment 'device last login server time',
`lastOfflineTime` varchar(255) NOT NULL DEFAULT (date_format(now(), '%Y-%m-%d %T')) comment 'device last offline from server time',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
이 쿼리는 작동합니다.
CREATE TABLE `t_test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`runningTime` bigint(20) DEFAULT '0' COMMENT 'device running time',
`firstLoginTime` varchar(250) NOT NULL DEFAULT 'date_format(now(), ''%Y-%m-%d %T'')' COMMENT 'device first login server time',
`lastLoginTime` varchar(250) NOT NULL DEFAULT 'date_format(now(), ''%Y-%m-%d %T'')' COMMENT 'device last login server time',
`lastOfflineTime` varchar(250) NOT NULL DEFAULT 'date_format(now(), ''%Y-%m-%d %T'')' COMMENT 'device last offline from server time',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
언급URL : https://stackoverflow.com/questions/61271591/mysql-8-0-can-run-this-sql-script-but-in-mariadb-5-5-cant-run-and-error1064-4
반응형
'source' 카테고리의 다른 글
Galera 성단: 매일 밤 5시 30분에 신비로운 desync (0) | 2023.08.14 |
---|---|
Django request.is _false를 반환합니다. (0) | 2023.08.14 |
SQL의 필드에 chr(30)이 있는 문자열을 삽입하는 방법 (0) | 2023.08.14 |
Twitter 부트스트랩 모달 전체 화면을 만드는 방법 (0) | 2023.08.14 |
사용자가 모바일 Safari에서 탐색했는지 확인 (0) | 2023.08.14 |