programing

MariaDB가 오류 [42000][1064]로 단순 테이블 작성을 거부하는 이유는 무엇입니까?

copyandpastes 2022. 10. 29. 12:19
반응형

MariaDB가 오류 [42000][1064]로 단순 테이블 작성을 거부하는 이유는 무엇입니까?

이 문제를 해결하는 방법 또는 MariaDB 서버에서 오류를 반환하는 이유를 알고 싶습니다.그냥 데이터베이스를 설치하고, 사용자를 만들고, 새 스키마를 만들고,use database testing;다음 쿼리를 사용하여 데이터베이스에 간단한 테이블을 만들 준비가 되었습니다.

CREATE TABLE USERS
(
    ID          NUMBER(4)    NOT NULL PRIMARY KEY,
    NAME        VARCHAR2(20) NOT NULL,
    DEPTO       VARCHAR2(20) NOT NULL
);

사용 중인 데이터베이스의 사용자가 모든 권한을 부여했습니다.그러나 MariaDB는 다음을 반환합니다.

[42000][1064] (conn=14) 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 'NUMBER(4) NOT NULL PRIMARY KEY
[42000][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 'NUMBER(4) NOT NULL PRIMARY KEY
)' at line 2
Query is: CREATE TABLE USERS (
ID NUMBER(4) NOT NULL PRIMARY KEY
)
java thread: RMI TCP Connection(5)-127.0.0.1

누가 나 좀 도와줄래?

데이터 유형은 Oracle에서 가져온 것이며 SQL_MODE가 다음 구문을 받아들이도록 설정할 수 있습니다.

MariaDB 10.3 이상에서는 sql_mode 시스템 변수를 Oracle로 설정하면 서버가 Oracle의 PL/SQL 언어 서브셋을 인식할 수 있습니다.예를 들어 다음과 같습니다.

SET SQL_MODE='ORACLE';

CREATE TABLE USERS
(
    ID          NUMBER(4)    NOT NULL PRIMARY KEY,
    NAME        VARCHAR2(20) NOT NULL,
    DEPTO       VARCHAR2(20) NOT NULL
);

NUMBER와 VARCHAR2는 동의어입니다.

+-------------+-----------------+
| Oracle type | MariaDB synonym |
+-------------+-----------------+
| VARCHAR2    | VARCHAR         |
| NUMBER      | DECIMAL         |
+-------------+-----------------+

db <> 데모 표시

MySQL 데이터베이스에서 Oracle 구문을 사용하고 있는 것 같습니다.몇 가지 조정이 필요합니다.

CREATE TABLE USERS (
    ID          INT    NOT NULL PRIMARY KEY,
    NAME        VARCHAR(20) NOT NULL,
    DEPTO       VARCHAR(20) NOT NULL
);

즉,

  • VARCHAR2(n)Oracle에만 해당됩니다.MySQL(및 기타 대부분의 데이터베이스)에는VARCHAR(n)

  • 거기에는 없다NUMBER(n)MySQL의 데이터 타입 중 하나.NUMERIC(n, m)이것은 고정 소수점 숫자입니다만, 아마INT어쨌든 여기서

언급URL : https://stackoverflow.com/questions/60920612/why-mariadb-refuses-to-create-a-simple-table-with-error-420001064

반응형