powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / h2 не принимает команды
18 сообщений из 18, страница 1 из 1
h2 не принимает команды
    #40071126
pycha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую. Предыстория в этой теме.
Есть прога на 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
h2 не принимает команды
    #40071133
Значит MySQL экспортирует вещи, которые не поддерживаются H2. Вот это в принципе умеет только MySQL распознать: ENGINE=MyISAM . Если хочется все-таки идти дорогой бекап->считать в inmemory db (я бы еще раз взвесил все за и против), то прийдется писать доп обработку этого файла - заменять MySQL-специфичные штуки на то что поймет H2.
...
Рейтинг: 0 / 0
h2 не принимает команды
    #40071162
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если убрать опции движка и физического хранения то все работает.
Код: 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
h2 не принимает команды
    #40071175
pycha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, спасибо. Я это тоже уже заметил. Хочу уточнить: там в конце AUTO_INCREMENT=25. Если его убрать на функционал никак не повлияет?. гугл выдает кучу ответов, но только об AUTO_INCREMENT , который назначается столбцу.
...
Рейтинг: 0 / 0
h2 не принимает команды
    #40071182
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего не влияет ни на что. Тестируй. Смотри как работает.
...
Рейтинг: 0 / 0
h2 не принимает команды
    #40071215
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pycha,

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


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

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

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


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

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


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


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

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

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


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

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


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