Форум OlegON > Программы и оборудование для автоматизации торговли > Кассовые программы > УКМ-4

Проблемы при переходе УКМ4 с 47 sp5 на 50 sp2 : УКМ-4

20.04.2024 15:03


15.02.2013 19:46
VitorJ
 
Доброго времени суток!
Сервер при переходе обновился без проблем, всё как по маслу, а вот с кассами случилась неприятность посыпались ошибки, типа отсутствующих записей и т. д.
Вот ошибка на которой я остановился и никак не могу понять где искать...
ukmup.log
Код:
==== ukmclient-upgrade.sql execution started
ERROR 1062 (23000) at line 14 in file: 'ukmclient-upgrade.sql': Duplicate entry '0-9-srv_external_links' for key 1
@domain_id := domain_id
9
ERROR
2013/02/16 00:11:21| 
2013/02/16 00:11:21|---- ERROR ----
2013/02/16 00:11:21| 
2013/02/16 00:11:21|ERROR: Failed to process package 00005001-00005002.ops.c.tgz. up.sh failed
2013/02/16 00:11:21|==== StartStopPrograms(errupdate) begin
2013/02/16 00:11:21|  Starting services
2013/02/16 00:11:21|Trying to start service "mysql"
Starting MySQL  [  OK  ]
2013/02/16 00:11:21|Waiting for a while to be shure that process is started ...
2013/02/16 00:11:26|Service "mysql" started
2013/02/16 00:11:26|Sleeping for 15 sec 
2013/02/16 00:11:41|Trying to start service "httpd"
httpd (pid 6220) already running
2013/02/16 00:11:41|Waiting for a while to be shure that process is started ...
2013/02/16 00:11:46|Service "httpd" started
2013/02/16 00:11:46|Sleeping for 15 sec 
2013/02/16 00:12:01|==== StartStopPrograms(errupdate) end
2013/02/16 00:12:01|Removing /usr/local/ukmclient/ukmupman/temp_unpack
2013/02/16 00:12:01|UPDATE FAILED
2013/02/16 00:12:01|===> ukmupman WORK FINISHED.
2013/02/16 00:12:01|
ukmupman.log

Код:
2013/02/16 00:11:20|Unpacking of 00005001-00005002.ops.c.tgz completed
2013/02/16 00:11:20|
2013/02/16 00:11:20|Checking for self update directory _selfupdate_linux_
2013/02/16 00:11:20|_selfupdate_linux_ not found
2013/02/16 00:11:20|up.sh starting
2013/02/16 00:11:21| 
2013/02/16 00:11:21|---- ERROR ----
2013/02/16 00:11:21| 
2013/02/16 00:11:21|ERROR: Failed to process package 00005001-00005002.ops.c.tgz. up.sh failed
2013/02/16 00:11:21|==== StartStopPrograms(errupdate) begin
2013/02/16 00:11:21|  Starting services
2013/02/16 00:11:21|Trying to start service "mysql"
2013/02/16 00:11:21|Waiting for a while to be shure that process is started ...
2013/02/16 00:11:26|Service "mysql" started
2013/02/16 00:11:26|Sleeping for 15 sec 
2013/02/16 00:11:41|Trying to start service "httpd"
2013/02/16 00:11:41|Waiting for a while to be shure that process is started ...
2013/02/16 00:11:46|Service "httpd" started
2013/02/16 00:11:46|Sleeping for 15 sec 
2013/02/16 00:12:01|==== StartStopPrograms(errupdate) end
2013/02/16 00:12:01|Removing /usr/local/ukmclient/ukmupman/temp_unpack
2013/02/16 00:12:01|UPDATE FAILED
2013/02/16 00:12:01|===> ukmupman WORK FINISHED.
2013/02/16 00:12:01|
Есть у кого идеи где искать эту пресловутую запись?
15.02.2013 22:53
VitorJ
 
Тему можно закрыть после 4 часов сидения решение найдено.
16.02.2013 01:59
OlegON
 
Для последователей лучше бы описать решение... Мало ли, кто еще налетит..
16.02.2013 07:43
VitorJ
 
Доброго всем времени суток.
Без проблем. Обновление сковырнулось на выполнении скрипта из архива 00005001-00005002.ops.c.tgz, при его выполнении выскочила ошибка
Код:
==== ukmclient-upgrade.sql execution started
ERROR 1048 (23000) at line 97 in file: 'ukmclient-upgrade.sql': Column 'domain_id' cannot be null
@domain_id := domain_id
9
@domain_id := domain_id
0
@domain_id := `domain_id`
11
ERROR
2013/02/15 17:56:33| 
2013/02/15 17:56:33|---- ERROR ----
2013/02/15 17:56:33| 
2013/02/15 17:56:33|ERROR: Failed to process package 00005001-00005002.ops.c.tgz. up.sh failed
2013/02/15 17:56:33|==== StartStopPrograms(errupdate) begin
2013/02/15 17:56:33|  Starting services
2013/02/15 17:56:33|Trying to start service "mysql"
Печально но в таблице srv_trm_domain_tables отсутствовала запись 'gds_bs_goods', значение domain_id для gds_bs_goods нужно будет взять на ukmserver в оналогичной таблице.

Но как выяснилось до этого момента скрпит наполовину отработал и успел создать несколько записей, таблиц, столбцов и т д....
Пришлось идти от противного взял скрипт из обновления и выполнял построчно попутно вычислял чего он успел сделал.
в итоге получился вот такой скриптец, который откатывает изменения.
Код:
drop table srv_external_links;
drop table trm_in_appeal_reason;
drop table trm_in2_appeal_reason;
drop table gds_bs_goods_journal;
drop table gds_bs_delivery_proc;
drop table trm_in_disc_std_list_basket;
drop table trm_in2_disc_std_list_basket;
drop table trm_out_webmoney_sequence;

delete from srv_trm_domain_tables where name='srv_external_links';
delete from srv_trm_domain_tables where name='trm_in_appeal_reason';
delete from srv_trm_domain_tables where name='trm_in2_appeal_reason';
delete from srv_trm_domain_tables where name='gds_bs_goods_journal';
delete from srv_trm_domain_tables where name='gds_bs_delivery_proc';
delete from srv_trm_domain_tables where name='trm_in_disc_std_list_basket';
delete from srv_trm_domain_tables where name='trm_in2_disc_std_list_basket';
delete from srv_trm_domain_tables where name='trm_out_webmoney_sequence';
delete from srv_trm_domain_tables where name='trm_line_oper_day';
ALTER TABLE trm_line_acceptance_items DROP COLUMN title;
ALTER TABLE trm_in_defect DROP COLUMN title;
ALTER TABLE trm_in2_defect DROP COLUMN title;
ALTER TABLE trm_line_acceptance_items DROP COLUMN appeal_reason;
ALTER TABLE trm_line_delivery DROP COLUMN shipment;
ALTER TABLE local_srt_storage DROP COLUMN shipment;
ALTER TABLE trm_line_delivery DROP COLUMN invoice_amount;
ALTER TABLE trm_line_oper_day DROP COLUMN version;
ALTER TABLE trm_line_oper_day DROP COLUMN deleted;
ALTER TABLE trm_line_delivery_items DROP COLUMN title;
ALTER TABLE trm_in_bp DROP COLUMN remains;
ALTER TABLE trm_in2_bp DROP COLUMN remains;
ALTER TABLE trm_in_currency DROP COLUMN monetary_unit_multiplier;
ALTER TABLE trm_in2_currency DROP COLUMN monetary_unit_multiplier;
RENAME TABLE `trm_line_oper_day`TO `local_oper_day`;
Но этого мало нужно создать в директории файл флаг
UPDATE_CONTINUED говорит о том что обновление нужно продолжить, а не запускать заново
UPDATE_PACKAGE_IN_PROGRESS указывается имя пакета с которого нужно продолжить обновление, название нужно указать внутри первой строкой.
UPDATE_IN_PROGRESS указывает на то, что выполняется обновление.

после этого заходим через SSH на кассу и благополучно запускаем скрипт на на выполнение обновления
/usr/local/ukmclient/ukmupman/
./ukmupman.sh
смотрим результат в логах.

Пока вроде все, касса обновилась. Наблюдаю теперь за поведением все ли корректно прошло.
И ещё момент, если после всех монипуляций у вас касса не стартовала автоматический, то есть на УКМ сервере весит в статусе обновление, нужно стартануть её в ручную. Зайти на WEB кассы включить авто запуск, стартрануть ukmclient;
Вот в принципе и всё. Касса корректно обновилась и работает.

Ну и рецепт чтоб не оказаться в такой ситуации как я:
1. Нужно проверить наличие строки gds_bs_goods в таблице srv_trm_domain_tables.
2. если её там нет добавляем Insert into srv_trm_domain_tables values (0,domain_id, 'gds_bs_goods',0,0); где domain_id это значение такое же как на Ukmserver.
После этого всё проходит нормально, по крайней мере у меня все кассы обновились без проблем.
Но как говорится не говори ГОП пока не перепрыгнешь.
16.02.2013 15:54
Павел Сосновских
 
правильней все же восстанавливать из бэкапа(создается вначале обновления)
устранять только одну ошибку, на которой споткнулось, и запускать заново
16.02.2013 16:53
VitorJ
 
Цитата:
Павел Сосновских правильней все же восстанавливать из бэкапа(создается вначале обновления)
устранять только одну ошибку, на которой споткнулось, и запускать заново
Когда знаешь, что она одна то конечно. Скажем так я предпочел разобраться изнутри нежли прибывать в счастливом неведении.
20.02.2013 09:25
Aleks_Str
 
Мне "повезло" больше:
переходил с непомню_какой на 49СП8.
В одном из магазинов сервер обновился нормально, первая касса тоже нормально, а на второй - кирдык.
Начальство бегает, слюну роняет: касса-то стоит! Запускай как хочешь и не е....т!
Самым быстрым способом оказался способ - заново перезалить кассу.
Правда, нам старые чеки на кассе не нужны. Поэтому просто зарегал ее под другим номером и было мне хорошо...
13.03.2013 06:10
VitorJ
 
Вношу ещё один маленький вклад, при обновлении УКМ4 с 47 на 50 версию
вы можете столкнуться вот с такой проблемой
Код:
===========================================
Unpacking "c:\Program Files\ukmserver\ukmupman\update\00004705-00004706.ops.s.zip" started

7-Zip (A) 4.56 beta  Copyright (c) 1999-2007 Igor Pavlov  2007-10-24

Processing archive: c:\Program Files\ukmserver\ukmupman\update\00004705-00004706.ops.s.zip

Extracting  00004705-00004706.ops.c.tgz
Extracting  00004705-00004706.ops.c.tgz.md5
Extracting  common-srv-ops.cmd
Extracting  common-srv-ops.sh
Extracting  getukmsrvdbdata.cmd
Extracting  read-server-ini.php
Extracting  srvupdate-ops-internal.cmd
Extracting  ukmserver-upgrade.sql
Extracting  up.cmd
Extracting  up.sh

Everything is Ok

Files: 10
Size:       9683
Compressed: 7114
Unpacking "c:\Program Files\ukmserver\ukmupman\update\00004705-00004706.ops.s.zip" completed
===========================================
.
.
.
.
===========================================
Clearing ReadOnly attributes in "c:\Program Files\ukmserver\ukmupman\temp_unpack"
"attrib" -? пў<п?вбп ў-гва?--?c Ё<Ё ў-?и-?c
ЄR┐-¤Rc, ЁбЇR<-п?┐Rc ЇаR?а┐┐Rc Ё<Ё ЇЄ?в-л┐ дc<R┐.
===================================
ERROR
===================================
Может конечно это и известная проблема, но я что то не нашёл.
Решение простое указываем в переменной среды Path директорию где лежат системные файлы.

Код:
Clearing ReadOnly attributes in "c:\Program Files\ukmserver\ukmupman\temp_unpack"
"attrib" -? пў<п?вбп ў-гва?--?c Ё<Ё ў-?и-?c
ЄR┐ -¤Rc, ЁбЇR<-п?┐Rc ЇаR?а ┐┐Rc Ё<Ё Ї Є?в-л┐ д c<R┐.
Говорит нам о том, что для созданной папки temp_unpack не удаётся установить атрибут системный и снять атрибут Read Only, по причине того, что ОС не знала о такой команде как attrib. На сколько я смог понять эти каракули.
13.03.2013 08:23
Dim
 
это не каракули, это кодировку надо поменять
13.03.2013 17:36
VitorJ
 
Цитата:
Dim это не каракули, это кодировку надо поменять
Не это каракули. Забыл просто кодировку сменить.
Часовой пояс GMT +3, время: 15:03.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.