为什么 MariaDB 拒绝创建一个简单的 table 并出现错误 [42000][1064]?
Why MariaDB refuses to create a simple table with error [42000][1064]?
我只想知道如何解决这个问题,或者为什么 MariaDB 服务器总是让我返回错误。我只是安装数据库,创建一个用户,一个新模式,我用 use database testing;
指向那个数据库,我准备用这个查询在数据库上创建一个简单的 table:
CREATE TABLE USERS
(
ID NUMBER(4) NOT NULL PRIMARY KEY,
NAME VARCHAR2(20) NOT NULL,
DEPTO VARCHAR2(20) NOT NULL
);
我正在使用的数据库中的用户已授予所有权限。但是 MariaDB returns:
[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
有人可以帮助我吗?
您似乎在 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)
MySQL 中也没有 NUMBER(n)
数据类型;有 NUMERIC(n, m)
,这是一个定点数,但你可能想要 INT
无论如何
数据类型来自 Oracle,您可以设置 SQL_MODE 接受该语法:
In MariaDB 10.3 and later, setting the sql_mode system variable to Oracle allows the server to understand a subset of Oracle's PL/SQL language. For example:
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 |
+-------------+-----------------+
我只想知道如何解决这个问题,或者为什么 MariaDB 服务器总是让我返回错误。我只是安装数据库,创建一个用户,一个新模式,我用 use database testing;
指向那个数据库,我准备用这个查询在数据库上创建一个简单的 table:
CREATE TABLE USERS
(
ID NUMBER(4) NOT NULL PRIMARY KEY,
NAME VARCHAR2(20) NOT NULL,
DEPTO VARCHAR2(20) NOT NULL
);
我正在使用的数据库中的用户已授予所有权限。但是 MariaDB returns:
[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
有人可以帮助我吗?
您似乎在 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)
MySQL 中也没有
NUMBER(n)
数据类型;有NUMERIC(n, m)
,这是一个定点数,但你可能想要INT
无论如何
数据类型来自 Oracle,您可以设置 SQL_MODE 接受该语法:
In MariaDB 10.3 and later, setting the sql_mode system variable to Oracle allows the server to understand a subset of Oracle's PL/SQL language. For example:
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 |
+-------------+-----------------+