#mysql #sql #mariadb #datagrip
Вопрос:
Я пытаюсь использовать DataGrip IntelliJ для выполнения некоторой работы с SQL в базе данных MariaDB.
Почему-то я не могу выполнить запрос, который был автоматически создан самим DataGrip….
Можете ли вы помочь мне найти в нем ошибку ?
create table currencyIndex
(
id int auto_increment,
isoCode VARCHAR2(3) not null,
isoCodeNumeric SMALLINT not null,
currencyName VARCHAR2(100) not null,
countryName VARCHAR2(100) not null,
constraint currencyIndex_pk
primary key (id)
);
Ошибка в том, что
[42000][1064] (conn=246) 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 '(3) not null,
[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 '(3) not null,
isoCodeNumeric SMALLINT not null,
currencyName VARCHAR2(100) ...' at line 4.
Я попытался проверить запрос с помощью онлайн-валидатора, и, похоже, все в порядке… Есть какие-нибудь предложения ?
Комментарии:
1. Что такое VARCHAR2 ? Почему бы не использовать просто VARCHAR?
Ответ №1:
У MariaDB и MySQL нет VARCHAR2
типа (но у Oracle есть). Используйте обычный VARCHAR
, и ошибка должна исчезнуть:
CREATE TABLE currencyIndex (
id INT AUTO_INCREMENT,
isoCode VARCHAR(3) NOT NULL,
isoCodeNumeric SMALLINT NOT NULL,
currencyName VARCHAR(100) NOT NULL,
countryName VARCHAR(100) NOT NULL,
CONSTRAINT currencyIndex_pk PRIMARY KEY (id)
);
ДЕМОНСТРАЦИЯ
Комментарии:
1. Спасибо, чувак… странно, что этот валидатор MySQL говорит, что все в порядке eversql.com/sql-syntax-check-validator
2. Я могу предположить и сказать, что, возможно, его создатели обленились и просто имеют один фиксированный набор разрешенных типов столбцов. Единственная проверка, которая вам нужна, — это проверка фактической базы данных. Проверьте демо-ссылку, которую я дал, она работает сейчас.