Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / h2 не принимает команды / 18 сообщений из 18, страница 1 из 1
18.05.2021, 17:52
    #40071126
pycha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
Приветствую. Предыстория в этой теме.
Есть прога на java, и есть файл с командами sql. Нужно обработать файл и вытянуть нужные данные.
Я выбрал бд, которая использует оперативку и ее можно можно присоединить к проэкту - Н2. Полетели ошибки, гугл мне не дал четкого понимания что не так. Догадываюсь что Н2 не поддерживает такой синтаксис. Если да то посоветуйте базу, которую можно присоединить jar-файлом к проэкту и она поддерживала такой синтаксис. Ну или подскажите что не так.

По сути вот ошибки. Буду благодарен любому совету

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
CREATE TABLE `oc_address` (
  `address_id` int(11) NOT NULL AUTO_INCREMENT,
  `customer_id` int(11) NOT NULL,
  `firstname` varchar(32) NOT NULL,
  `lastname` varchar(32) NOT NULL,
  `company` varchar(40) NOT NULL,
  `address_1` varchar(128) NOT NULL,
  `address_2` varchar(128) NOT NULL,
  `city` varchar(128) NOT NULL,
  `postcode` varchar(10) NOT NULL,
  `country_id` int(11) NOT NULL DEFAULT '0',
  `zone_id` int(11) NOT NULL DEFAULT '0',
  `custom_field` text NOT NULL,
  PRIMARY KEY (`address_id`),
  KEY `customer_id` (`customer_id`)  //вот тут выпадает Syntax error in SQL statement "CREATE TABLE `OC_ADDRESS` (
                                                        //                           `ADDRESS_ID` INT(11) NOT NULL AUTO_INCREMENT,
                                                        //                             `CUSTOMER_ID` INT(11) NOT NULL,
                                                        //                             `FIRSTNAME` VARCHAR(32) NOT NULL,
                                                        //                             `LASTNAME` VARCHAR(32) NOT NULL,
                                                        //                             `COMPANY` VARCHAR(40) NOT NULL,
                                                        //                             `ADDRESS_1` VARCHAR(128) NOT NULL,
                                                        //                             `ADDRESS_2` VARCHAR(128) NOT NULL,
                                                        //                             `CITY` VARCHAR(128) NOT NULL,
                                                        //                             `POSTCODE` VARCHAR(10) NOT NULL,
                                                        //                             `COUNTRY_ID` INT(11) NOT NULL DEFAULT '0',
                                                        //                             `ZONE_ID` INT(11) NOT NULL DEFAULT '0',
                                                        //                             `CUSTOM_FIELD` TEXT NOT NULL,
                                                        //                             PRIMARY KEY (`ADDRESS_ID`)
                                                        //                             KEY[*] `CUSTOMER_ID` (`CUSTOMER_ID`)
                                                        //                           ) "; expected "INDEX, ,, )";

) ENGINE=MyISAM AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;


//если строку с ключем закоментировать , но по последней строке вылазит
//Syntax error in SQL statement "CREATE TABLE `OC_ADDRESS` (
//  `ADDRESS_ID` INT(11) NOT NULL AUTO_INCREMENT,
//  `CUSTOMER_ID` INT(11) NOT NULL,
//  `FIRSTNAME` VARCHAR(32) NOT NULL,
//  `LASTNAME` VARCHAR(32) NOT NULL,
//  `COMPANY` VARCHAR(40) NOT NULL,
//  `ADDRESS_1` VARCHAR(128) NOT NULL,
//  `ADDRESS_2` VARCHAR(128) NOT NULL,
//  `CITY` VARCHAR(128) NOT NULL,
//  `POSTCODE` VARCHAR(10) NOT NULL,
//  `COUNTRY_ID` INT(11) NOT NULL DEFAULT '0',
//  `ZONE_ID` INT(11) NOT NULL DEFAULT '0',
//  `CUSTOM_FIELD` TEXT NOT NULL,
//  PRIMARY KEY (`ADDRESS_ID`),
//)[*] ENGINE=MYISAM AUTO_INCREMENT=25 DEFAULT CHARSET=UTF8;"; expected "identifier";
...
Рейтинг: 0 / 0
18.05.2021, 18:24
    #40071133
h2 не принимает команды
Значит MySQL экспортирует вещи, которые не поддерживаются H2. Вот это в принципе умеет только MySQL распознать: ENGINE=MyISAM . Если хочется все-таки идти дорогой бекап->считать в inmemory db (я бы еще раз взвесил все за и против), то прийдется писать доп обработку этого файла - заменять MySQL-специфичные штуки на то что поймет H2.
...
Рейтинг: 0 / 0
18.05.2021, 20:43
    #40071162
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
Если убрать опции движка и физического хранения то все работает.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
D:\h2\1.4.200\bin>h2-shell.bat

Welcome to H2 Shell 1.4.200 (2019-10-14)
Exit with Ctrl+C
Commands are case insensitive; SQL statements end with ';'
help or ?      Display this help
list           Toggle result list / stack trace mode
maxwidth       Set maximum column width (default is 100)
autocommit     Enable or disable autocommit
history        Show the last 20 statements
quit or exit   Close the connection and exit

sql> CREATE TABLE `oc_address` (
  `address_id` int(11) NOT NULL AUTO_INCREMENT,
  `customer_id` int(11) NOT NULL,
  `firstname` varchar(32) NOT NULL,
  `lastname` varchar(32) NOT NULL,
  `company` varchar(40) NOT NULL,
  `address_1` varchar(128) NOT NULL,
  `address_2` varchar(128) NOT NULL,
  `city` varchar(128) NOT NULL,
  `postcode` varchar(10) NOT NULL,
  `country_id` int(11) NOT NULL DEFAULT '0',
  `zone_id` int(11) NOT NULL DEFAULT '0',
  `custom_field` text NOT NULL,
  PRIMARY KEY (`address_id`)
...> ...> ...> ...> ...> ...> ...> ...> ...> ...> ...> ...> ...> ...> );
(Update count: 0, 24 ms)
sql>
sql> select * from oc_address;
ADDRESS_ID | CUSTOMER_ID | FIRSTNAME | LASTNAME | COMPANY | ADDRESS_1 | ADDRESS_2 | CITY | POSTCODE | COUNTRY_ID | ZONE_ID | CUSTOM_FIELD
(0 rows, 17 ms)



Автор, подкорректируй исходники и все заработает.
...
Рейтинг: 0 / 0
18.05.2021, 22:49
    #40071175
pycha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
да, спасибо. Я это тоже уже заметил. Хочу уточнить: там в конце AUTO_INCREMENT=25. Если его убрать на функционал никак не повлияет?. гугл выдает кучу ответов, но только об AUTO_INCREMENT , который назначается столбцу.
...
Рейтинг: 0 / 0
18.05.2021, 23:25
    #40071182
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
Скорее всего не влияет ни на что. Тестируй. Смотри как работает.
...
Рейтинг: 0 / 0
19.05.2021, 08:46
    #40071215
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
pycha,

Может быть ты "на пальцах" объяснишь что ты хочешь получить в конечном счёте и какие исходные данные у тебя есть? Местные жители придумают что-нибудь толковое и подскажут тебе куда копать. А то, здаётся мне, что-то неладное ты придумал.
...
Рейтинг: 0 / 0
19.05.2021, 09:27
    #40071222
h2 не принимает команды
Garrick, он в 1ом посте сослался на тему с предысторией.
...
Рейтинг: 0 / 0
19.05.2021, 09:27
    #40071223
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
Garrick,
В прошлой теме он описал.
...
Рейтинг: 0 / 0
19.05.2021, 09:29
    #40071225
pycha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
так вроде все уже и обьяснил. на данный момент вопрос частично решен. есть sql файл с командами для заполнения базы данных . скачивается с сайта- интернет магазина. нужно на лету вытянуть с него нужные мне данные. можно было бы просто спарсить, но я решил научится работать с базами данных и решил ипользовать inmemory субд Н2 чтобы вначале заполнить таблицы, а потом вытянуть нужные мне данные из базы подсредством sql запросов. Проблемма возникла из-за того что Н2 не полностью понимает синтаксис MySQL. Команды прийдется адаптировать. Разве что кто-то посоветует другую in-memory бд , которая будет понимать синтаксис MySQL
...
Рейтинг: 0 / 0
19.05.2021, 09:38
    #40071230
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
pycha,
Решил обучаться - обучайся. 22323870
...
Рейтинг: 0 / 0
19.05.2021, 11:24
    #40071264
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
pycha
так вроде все уже и обьяснил. на данный момент вопрос частично решен. есть sql файл с командами для заполнения базы данных . скачивается с сайта- интернет магазина. нужно на лету вытянуть с него нужные мне данные. можно было бы просто спарсить, но я решил научится работать с базами данных и решил ипользовать inmemory субд Н2 чтобы вначале заполнить таблицы, а потом вытянуть нужные мне данные из базы подсредством sql запросов. Проблемма возникла из-за того что Н2 не полностью понимает синтаксис MySQL. Команды прийдется адаптировать. Разве что кто-то посоветует другую in-memory бд , которая будет понимать синтаксис MySQL


Почему бы не взять MySQL? Она бесплатная, устанавливается очень просто.
И потом, есть 100% уверенность, что можно "нужно на лету вытянуть с него нужные мне данные", он их отдаст? Или есть административный доступ к машине где установлен этот магазин? Можно же "научится работать с базами данных" и на более простых и понятных задачах, специальные учебники, курсы, уроки и т.п. для этого есть в большом количестве.
...
Рейтинг: 0 / 0
19.05.2021, 11:36
    #40071271
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
pycha,

Вот тут есть описание как включить режим совместимости с MySQL и какие фичи в каком виде поддерживаются http://www.h2database.com/html/features.html#compatibility . Попробуй. Но надо понимать что 100% совместимости не будет никогда. Плохо разбираясь в предмете в целом, ещё дополнительно придётся бороться с несовместимостью SQL разных СУБД, со всякими непонятными и неочевидными ошибками из-за этого.
...
Рейтинг: 0 / 0
19.05.2021, 18:38
    #40071453
pycha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
Garrick

Почему бы не взять MySQL? Она бесплатная, устанавливается очень просто.


потому- что прога должна без проблем запускаться на любом компе, в перспективе она будет продаваться и не должна зависеть от от функционала сайта. Должна быть полностью настраиваемая
...
Рейтинг: 0 / 0
19.05.2021, 18:39
    #40071455
pycha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
Garrick,спасибо, буду читать
...
Рейтинг: 0 / 0
20.05.2021, 10:48
    #40071590
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
pycha
Garrick

Почему бы не взять MySQL? Она бесплатная, устанавливается очень просто.


потому- что прога должна без проблем запускаться на любом компе, в перспективе она будет продаваться и не должна зависеть от от функционала сайта. Должна быть полностью настраиваемая


т.е. в дальнейшем ваша программа не будет зависеть от базы того интернет-магазина и будет работать совершенно автономно?

P.S. всегда поражался таким наполеоновским планам - "я не знаю как эту херню сделать, но я её обязательно продам и стану миллионером". Молодец! Так держать!
...
Рейтинг: 0 / 0
20.05.2021, 11:05
    #40071600
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
Норм амбиции . В этот форум кст. приходят не только разработчики. Но и всякие менеджеры проектов
и прочие около-It личности для прояснения рисков.
...
Рейтинг: 0 / 0
21.05.2021, 09:13
    #40071848
pycha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
Спасибо за комментарии. Сейчас она делается под один сайт, и уже рабочая. Поменять один сайт на другой, не очень и сложно
В общем это не по теме
...
Рейтинг: 0 / 0
22.05.2021, 19:58
    #40072216
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
h2 не принимает команды
pycha
Garrick

Почему бы не взять MySQL? Она бесплатная, устанавливается очень просто.


потому- что прога должна без проблем запускаться на любом компе, в перспективе она будет продаваться и не должна зависеть от от функционала сайта. Должна быть полностью настраиваемая

чтобы прога запускалась на любом компе - она должна быть написана на джава,тогда она будет запускаться даже на утюге
по бд если нахаляву то конечно это постгрес - там оплачивается по факту только жук( но я думаю врядли вы даже знаете що це таке)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / h2 не принимает команды / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]