MariaDB使用Sequel Pro执行建表SQL报语法错误如何解决
语法错误原因
- 你使用的是Oracle专属SQL语法,与MariaDB支持的SQL方言不兼容,核心问题如下:
VARCHAR2为Oracle独有的可变长字符串类型,MariaDB中没有该类型,需替换为VARCHARNUMBER为Oracle独有的数值类型,MariaDB中需替换为DECIMAL,二者定义参数规则完全一致,支持DECIMAL(总位数, 小数位数)的写法
修改后适配MariaDB的SQL代码
CREATE TABLE USERS ( USER_ID INT PRIMARY KEY, FIRST_NAME VARCHAR(30), LAST_NAME VARCHAR(30), CITY VARCHAR(60) ); CREATE TABLE STORES ( STORE_ID INT PRIMARY KEY, NAME VARCHAR(100), CITY VARCHAR(60), SALES_TAX_RATE DECIMAL(6,5) ); CREATE TABLE ITEMS ( ITEM_ID INT PRIMARY KEY, NAME VARCHAR(30), PRICE DECIMAL(5,2) ); CREATE TABLE ORDERS ( ORDER_ID INT PRIMARY KEY, USER_ID INT, STORE_ID INT, CONSTRAINT FK_UserID FOREIGN KEY (USER_ID) REFERENCES USERS(USER_ID), CONSTRAINT FK_StoreID FOREIGN KEY (STORE_ID) REFERENCES STORES(STORE_ID) );
可选优化建议
如果需要更好的兼容性和中文支持,可以在建表语句末尾追加 ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 即可,示例:
CREATE TABLE USERS ( USER_ID INT PRIMARY KEY, FIRST_NAME VARCHAR(30), LAST_NAME VARCHAR(30), CITY VARCHAR(60) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
内容的提问来源于stack exchange,提问作者FilsanMadar
相关产品推荐
相关产品推荐

