MariaDB 구문 지원 이상함
몇 가지 MariaDB 인스턴스가 있습니다(예: 10.1.17, 10.1.25 및 10.2.6).
저는 10.2.6과 10.1.17에서 실행되는 SQL을 만들었는데 10.1.25에서는 실행되지 않고 그 이유를 모르겠습니다.
ALTER TABLE FOOBAR ALTER CREATED SET DEFAULT NOW();
SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 'NOW()' 근처에서 사용할 올바른 구문을 확인하십시오.
10.1.25에서 작동하는 것은CREATE TABLE
하지만 오직 그곳에서만 그리고 오직CURRENT_TIMESTAMP
대신에NOW()
.
CREATE TABLE `FOOBAR` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`CREATED` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
저도 노력했지만 그것도 안 됩니다.
ALTER TABLE FOOBAR ALTER CREATED SET DEFAULT CURRENT_TIMESTAMP;
문제를 재현할 수 없습니다.
MariaDB [_]> SELECT VERSION();
+-----------------+
| VERSION() |
+-----------------+
| 10.1.25-MariaDB |
+-----------------+
1 row in set (0.00 sec)
MariaDB [_]> DROP TABLE IF EXISTS `FOOBAR`;
Query OK, 0 rows affected (0.00 sec)
MariaDB [_]> CREATE TABLE `FOOBAR` (
-> `ID` bigint(20) NOT NULL AUTO_INCREMENT,
-> `CREATED_0` DATETIME DEFAULT NOW(),
-> `CREATED_1` DATETIME DEFAULT CURRENT_TIMESTAMP(),
-> `CREATED_2` TIMESTAMP DEFAULT NOW(),
-> `CREATED_3` TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
-> `CREATED_4` DATETIME,
-> `CREATED_5` DATETIME,
-> PRIMARY KEY (`ID`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.00 sec)
MariaDB [_]> SHOW CREATE TABLE `FOOBAR`\G
*************************** 1. row ***************************
Table: FOOBAR
Create Table: CREATE TABLE `FOOBAR` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`CREATED_0` datetime DEFAULT CURRENT_TIMESTAMP,
`CREATED_1` datetime DEFAULT CURRENT_TIMESTAMP,
`CREATED_2` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`CREATED_3` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`CREATED_4` datetime DEFAULT NULL,
`CREATED_5` datetime DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
...
MariaDB 10.2.1 이전에는 삽입 시 평가할 식을 제공하거나 함수를 제공할 수 없었습니다.대신 일정한 기본값을 제공해야 했습니다.한 가지 예외는 삽입 시 현재 타임스탬프를 사용하기 위해 TIMESTAMP 열의 기본값으로 CURRENT_TIMESTAMP를 사용할 수 있다는 것입니다.
...
CURRENT_TIMESTAMP
의 기본값으로 사용할 수도 있습니다.DATETIME
그러나 다음 문은 실패합니다.
MariaDB [_]> ALTER TABLE `FOOBAR`
-> ALTER COLUMN `CREATED_4` SET DEFAULT NOW();
ERROR 1064 (42000): 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 'NOW()' at line 2
MariaDB [_]> ALTER TABLE `FOOBAR`
-> ALTER COLUMN `CREATED_5` SET DEFAULT CURRENT_TIMESTAMP();
ERROR 1064 (42000): 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 'CURRENT_TIMESTAMP()' at line 2
...
10.2.1로 시작하는 MariaDB
DEFAULT
그리고 표정으로.DROP CONSTRAINT
MariaDB 10.2.1에 도입되었습니다....
MariaDB 10.2.1에서
문장:
MariaDB [_]> ALTER TABLE `FOOBAR`
-> ALTER COLUMN `CREATED_4` SET DEFAULT NOW(),
-> ALTER COLUMN `CREATED_5` SET DEFAULT CURRENT_TIMESTAMP();
작동합니다. db<>dbdle을 참조하십시오.
사용할 수 있습니다: ALTER TABLEtable_name
더하다type
타임스탬프가 NULL이 아님 기본값 현재_타임스탬프 이후name
;
언급URL : https://stackoverflow.com/questions/45210755/mariadb-syntax-support-weird
'programing' 카테고리의 다른 글
PowerShell 데스크톱 변수 (0) | 2023.07.31 |
---|---|
콘텐츠 편집 가능한 데이터를 저장 및 검색하는 방법 (0) | 2023.07.31 |
.NET vs ASP.NET 대 CLR 대 ASP (0) | 2023.07.31 |
jQuery를 사용하여 클라이언트의 클립보드에 텍스트를 복사하는 방법은 무엇입니까? (0) | 2023.07.31 |
Babel 6은 기본값을 내보내는 방법을 변경합니다. (0) | 2023.07.31 |