Синхронизация:Алгоритм действий если не работает синхронизация — различия между версиями

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск
Строка 40: Строка 40:
 
  select * from g$queue q where q.profile_id=:profile_id
 
  select * from g$queue q where q.profile_id=:profile_id
 
</pre>
 
</pre>
 +
  
 
=Частые ошибки=
 
=Частые ошибки=
 
==Column unknown==
 
==Column unknown==
 
Ошибка, возникающая на сервере. Означает, что у клиента в синхронизируемой таблице есть колонка, которой нет в этой таблице на серверной базе. Нужно либо добавить данную колонку на сервере, либо если она не нужна, или она есть не во всех клиентских базах, то добавить ее в список '''XFIELDS''' в '''declare.php'''.
 
Ошибка, возникающая на сервере. Означает, что у клиента в синхронизируемой таблице есть колонка, которой нет в этой таблице на серверной базе. Нужно либо добавить данную колонку на сервере, либо если она не нужна, или она есть не во всех клиентских базах, то добавить ее в список '''XFIELDS''' в '''declare.php'''.
 +
 +
==Violation of PRIMARY or UNIQUE KEY constraint==
 +
Ошибка, возникающая когда на момент вставки записи в таблицу, в ней уже есть строчка с таким же d$uuid, но с другим сочетанием id и g$profile_id. Нужно либо перегенерировать d$uuid у той строчки, которая уже есть, либо удалить запись, у которой совпадают id и g$profile_id.

Версия 11:55, 18 июля 2016

Порядок действий

На стороне клиента

  • Поискать запись по 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.