Я тоже пытался заставить работать руководство по SymmetricDS.
Все это в новинку для меня, и я столкнулся с рядом проблем, решение которых заняло много времени из-за моей неопытности с базами данных Java, драйверами баз данных Java и т. д., в дополнение к тому, что SymmeticDS также был для меня новым.
- Проблема с портами
- Проблема с драйвером JDBC
- Проблема управления базой данных JDBC H2
- Проблема капитализации таблицы
- Проблема с базой данных H2 *.mv.db
- Проблема с общим доступом к базе данных
Проблема с портами
Описание
Есть такие инструкции
../bin/sym --port 8080 --server
но в других местах порт по умолчанию 31415, который я помню, думая о пи, 3.1415926....
Решение
У меня есть веб-сервер Apache, работающий на локальном хосте, поэтому для тестирования SymmeticDS я адаптировал инструкцию порта 8080 для использования 31415, хотя для большинства людей, живущих с брандмауэрами и т. д., может иметь смысл наоборот. Поскольку оба движка (corp и store-001) работают на той же машине, брандмауэры и т. д. не являются проблемой для руководства, хотя я ожидаю, что они могут беспокоить меня позже.
Проблема с драйвером JDBC
Описание и решение
Мне нужно было загрузить и установить некоторые драйверы базы данных JDBC H2, чтобы все заработало.
Проблема управления базой данных JDBC H2
Описание
В некоторых местах учебник просит вас выполнить некоторые команды SQL для базы данных H2 corp-000 или store-001. Я привык к MySQL WorkBench и MS SQL Server Management Studio, и мне нужно было что-то похожее, чтобы позволить мне открывать базы данных, просматривать их содержимое и запускать команды SQL.
Решение
Я использовал что-то (называемое консольным просмотрщиком, я думаю), которое работает в обычном веб-браузере. Я загрузил и установил вещи с веб-сайта базы данных H2.
Проблема капитализации таблицы
Некоторые команды аварийно завершали работу с сообщениями об ошибках, такими как таблица ITEM (верхний регистр) не найдена. Проверка моей базы данных показала, что существует таблица с именем item (нижний регистр). Проблема возникает из-за того, что имена таблиц и полей в стандартном SQL по умолчанию используются в верхнем регистре, если только они не заключены в кавычки. Итак, в SQL
элемент
означает ПУНКТ, тогда как
'предмет'
означает пункт. Так (например) эта строка из учебника
insert into item (item_id, price_id, name) values (110000055, 55, 'Soft Drink');
неверно, если имена таблиц в нижнем регистре, например. для таблицы под названием «item».
Решение
Я просмотрел и преобразовал имена таблиц и имена столбцов в верхний регистр в файлах, прилагаемых к учебнику. Это было больше работы, чем я ожидаю от других людей. Я хотел внести свои изменения в SymmetricDS, но сдался, когда прочитал о подписании и публикации соглашений об авторских правах. Я выбрал заглавные буквы в качестве стандарта для имен, чтобы любая небрежность со стороны меня или SymmetricDS по поводу цитирования имен больше не мешала показу. Кроме того, любые плохие реализации SQL, которые либо настаивали на наличии кавычек, либо настаивали на отсутствии кавычек в некоторых местах, все еще могли работать. Например, если плохо реализованный драйвер не любит кавычки, то ITEM вместо «ITEM» все равно будет работать, а item или ITEM вместо «item» — нет.
Проблема с базой данных H2 *.mv.db
Описание
Изменения в программном обеспечении базы данных H2, похоже, продолжаются, и некоторые по умолчанию, по-видимому, используют файлы *.mv.db.
jdbc:h2:file:C:/Work/symmetric-server-3.7.34/tmp/h2/corp;MV_STORE=FALSE;AUTO_SERVER=TRUE
Решение
Добавление
;MV_STORE=FALSE
к моим строкам подключения в моем браузере, похоже, это исправило.
Проблема с общим доступом к базе данных
Описание
Я не мог запускать команды SQL для баз данных H2 (для создания новых данных для синхронизации), когда базы данных уже были открыты SymmetricDS, которая пыталась их синхронизировать.
Решение
jdbc:h2:file:C:/Work/symmetric-server-3.7.34/tmp/h2/corp;MV_STORE=FALSE;AUTO_SERVER=TRUE
Добавление
;AUTO_SERVER=TRUE
в строках подключения консоли/браузера это исправлено. Вы могли заметить, что у меня также есть полные пути к моей базе данных. Я не уверен, нужно ли мне это, или я просто добавил его при попытке исправить одну из проблем, перечисленных выше.
person
Ivan
schedule
23.06.2016