Синхронизация:Алгоритм действий если не работает синхронизация
Материал из wiki.standart-n.ru
Версия от 11:55, 18 июля 2016; Aleksnick (обсуждение | вклад)
Содержание
Порядок действий
На стороне клиента
- Поискать запись по d$uuid в g$distribute в первой, серверной и второй базах, чтобы определить между какими базами проблема.
- Если запись не ушла из первой базы в серверную, то сравните поле packet, а если она из серверной не дошла до второй базы, то сравните поле serverpacket.
- Проверяем, что на странице [http://192.168.67.30/sinhro/] данный профиль не светится с флагом -1, иначе ошибка на сервере.
- Проверить, что dt клиент включен.
- url адрес который прописан в клиенте, открывается в браузере и выдает no input data
- если не работает, проверить, что на сервере включен wamp.
- иначе если URL начинается с 10, проверить, что поднят open vpn.
- dt клиент не выдает ошибок при скачивании.
- dt клиент что-то скачивет, пишется объем траффика.
- если процесс скачивания идет очень долго, запустить dt клиент с ключом +detail и посмотреть на каких запросах тормозит.
- если проблема с таблицей по старой синхронизации, взять максимальное значение поля packet по этой таблице по этому профилю на сервере:
select max(packet) from :table where g$profile=:profle
и подставить его в генератор поля packet этой таблицы в клиентской базе:
GEN_%TABLE%_PACKET
- проапдейтить необходимые записи.
- Ошибка "Incomplete Zip File", нужно проверить, что антивирус не блокирует обмен.
На сервере
- сервер доступен
- wamp включен
- служба очереди работает
- в таблице docs есть свежие данные
- в таблице g$queue есть свежие данные
- профиль прописан в g$profiles, status=0, dbsecurekey not null, остальные колонки как у других подобных профилей.
- в таблице G$DISTRIBUTE_VECTORS есть строчка с tablename нужной таблицы, где to_profile_id либо 0, либо номер базы, куда данные должны уйти.
- в таблице G$DISTRIBUTE_X_TABLES по данному профилю настройки такие же как и у других профилей и там верно указано какой таблице на сервере соответствует таблица на клиенте.
select * from docs order by docdate desc
- если есть таблица g$queue, смотрим когда были последние пакеты и есть ли по ним ошибки.
select * from g$queue q where q.profile_id=:profile_id
Частые ошибки
Column unknown
Ошибка, возникающая на сервере. Означает, что у клиента в синхронизируемой таблице есть колонка, которой нет в этой таблице на серверной базе. Нужно либо добавить данную колонку на сервере, либо если она не нужна, или она есть не во всех клиентских базах, то добавить ее в список XFIELDS в declare.php.
Violation of PRIMARY or UNIQUE KEY constraint
Ошибка, возникающая когда на момент вставки записи в таблицу, в ней уже есть строчка с таким же d$uuid, но с другим сочетанием id и g$profile_id. Нужно либо перегенерировать d$uuid у той строчки, которая уже есть, либо удалить запись, у которой совпадают id и g$profile_id.