Symmetricds не может синхронизировать столбец значений по умолчанию

Сервер Symmetricds настроен с помощью postgresql 9.4, а на клиентских узлах установлен sqlite3. Недавно мне пришлось изменить таблицу на стороне сервера, а затем отправить схему клиенту с помощью команды symadmin send-schema --engine <server> --node <node> <table>

Одним из изменений в таблице стало добавление значения по умолчанию в поле даты update_date date DEFAULT ('now'::text)::date.

Поскольку изменения применяются, в симметричном журнале я теперь вижу следующее сообщение об ошибке на стороне сервера:

ERROR [<server>] [AcknowledgeService] [qtp1874154700-1322] The outgoing batch <node>-41837 failed. ERROR: invalid input syntax for type date: "'now'::text)::date"

Эта ошибка появляется из-за того, что sqlite3 не поддерживает 'now'::text)::date" в качестве значения по умолчанию? В таком случае, как я могу распространять изменения?

OR

Если это проблема symmetrids, которая не распознает 'now'::text)::date" как значение по умолчанию для поля update_date?

Я подозреваю, что из-за этой ошибки вся синхронизация между клиентом и сервером останавливается.

Любая подсказка приветствуется.


person jazaman    schedule 19.06.2016    source источник


Ответы (2)


надеюсь проблема не в производстве

вам нужно будет удалить исходящий пакет с изменением или просто связь между ним и таблицей изменений

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

person Boris Pavlović    schedule 19.06.2016
comment
Спасибо @Boris Pavlović, но не совсем понял ваше предложение. Поэтому мне нужно удалить конкретную запись из 'sym_outgoing_batch'... как удалить ссылку для изменения команды таблицы. В конце вместо схемы вы предлагаете вместо этого отправить необработанный sql ddl, верно? - person jazaman; 21.06.2016
comment
удалить строку в sym_data_event, которая связывает ошибочный исходящий пакет со строкой sym_data, содержащей выражение таблицы изменений - person Boris Pavlović; 21.06.2016

Пакет с ошибкой задержит все остальные пакеты с ошибкой. Вы можете игнорировать пакет с ошибкой, установив статус «IG» для этого конкретного пакета. Однако это приведет к тому, что все записи изменений в пакете не будут применены к цели.

Вы уверены, что значение по умолчанию правильно применено к SQLITE. Вот пример таблицы со значением даты по умолчанию сейчас.

create table forum (id int primary key, some_date date default(date('now')));

Затем вы можете отправить соответствующие изменения или создать своим клиентам с помощью функции отправки sql.

Использованная литература:

person Josh    schedule 22.06.2016