Forums / National / Russian / Тех. поддержка / [Решено] Обновление - Fatal error

12>>>

webitproff
#1 2023-03-27 02:36

Написал бы в эту тему, но после релиза уже было фиксы в мастер ветки, её и скачал(по состоянию на 23:00 от 26 марта 2023), и при обновлении сайта "приехали"...

при переходе по ссылке обновления как пример  https://cotontisite.com/install.php

Fatal error

2023-03-27 02:27

SQL error 42S21: Column already exists: 1060 Duplicate column name 'log_uid'

#0  cot_diefatal(SQL error 42S21: Column already exists: 1060 Duplicate column name 'log_uid') called at [/var/www/cotontisite.com/system/database.php:368]
#1  CotDB->query(ALTER TABLE `cot_logger` ADD `log_uid` int UNSIGNED NOT NULL DEFAULT '0') called at [/var/www/cotontisite.com/system/database.php:780]
#2  CotDB->runScript(
INSERT INTO `cot_config` (`config_owner`, `config_cat`, `config_order`, `config_name`, `config_type`, `config_value`, `config_default`, `config_variants`, `config_text`) VALUES
('core','main','08','loggerlevel',2,'sec+adm+ext','sec+adm+ext','none,sec,adm,ext,sec+adm,sec+ext,adm+ext,sec+adm+ext,all','');

ALTER TABLE `cot_logger` MODIFY `log_group` varchar(64) DEFAULT 'adm';
ALTER TABLE `cot_logger` ADD `log_uid` int UNSIGNED NOT NULL DEFAULT '0';
ALTER TABLE `cot_logger` ADD `log_type` varchar(32) DEFAULT '';
ALTER TABLE `cot_logger` ADD `log_status` varchar(24) DEFAULT '';
ALTER TABLE `cot_logger` ADD `log_uri` varchar(255) DEFAULT '';

UPDATE `cot_logger` SET `log_group` = 'forums' WHERE `log_group` = 'for';
UPDATE `cot_logger` SET `log_group` = 'users' WHERE `log_group` = 'usr';
UPDATE `cot_logger` SET `log_group` = 'page' WHERE `log_group` = 'pag';) called at [/var/www/cotontisite.com/system/extensions.php:85]
#3  cot_apply_patches(./setup/siena, 0.9.22) called at [/var/www/cotontisite.com/modules/install/inc/install.update.php:245]
#4  include(/var/www/cotontisite.com/modules/install/inc/install.update.php) called at [/var/www/cotontisite.com/install.php:149]

 

Добавлено 49 минут спустя:

еще не все... потом проскочило:

Warning: Undefined array key "loggerlevel" in /system/functions.php on line 3365
Warning: Undefined array key "loggerlevel" in /system/functions.php on line 3367
Warning: Undefined array key "loggerlevel" in /system/functions.php on line 3371
Warning: Undefined array key "loggerlevel" in /system/functions.php on line 3372
Deprecated: stripos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /system/functions.php on line 3372

но воспроизвести как и почему не смог

 

Добавлено 1 неделя спустя:

Паша, вопрос скорее к тебе. почему больше нельзя обновиться  с релиза 0,9,22 до актуального из мастер ветки?

Fatal error

2023-04-03 03:36

SQL error 42S21: Column already exists: 1060 Duplicate column name 'log_uid'

#0 /system/database.php(372): cot_diefatal('SQL error 42S21...')
#1 /system/database.php(784): CotDB->query('ALTER TABLE `co...')
#2 /system/extensions.php(85): CotDB->runScript('\nINSERT INTO `c...')
#3 /modules/install/inc/install.update.php(245): cot_apply_patches('./setup/siena', '0.9.22')
#4 /install.php(149): include('/var/www/u19845...')

 

Добавлено 13 минут спустя:

хм. после того как перезаписал файлы движка поисчезали названия кнопок, -

предупреждения об этом ни на форуме,  ни в новостях, ни в мастер ветке не было,

файлы локализации измененны, -

одни строки удаленны, другие добавленны, кроме дефолтного скина админки использовать свой не могу, надо "перекапывать"...

 

итог - обновиться как в сказке не получится.

аккаунт удален - не срослось с разработчиками
ушел на другой движок
This post was edited by Alex300 (2023-04-05 17:47, 1 year ago)
Kort
#2 2023-04-03 08:12

Какая проблема посмотреть в теме какие строки пропали, а в коммитах -- что с ними приключилось?

Если все же проблема

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Alex300
#3 2023-04-03 08:22

Паша, вопрос скорее к тебе. почему больше нельзя обновиться  с релиза 0,9,22 до актуального из мастер ветки?

Эту ошибку выловить не удалось. Позже доработаем установщик - добавим защиту от двойного запуска. Хотя я не уверен что проблема в этом. Сам патч, возможно, перепишем чтобы в нем была проверка на существование поля.

 

хм. после того как перезаписал файлы движка поисчезали названия кнопок ... файлы локализации измененны

Эта работа пока в процессе. Когда она закончится - будет список изменений.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
webitproff
#4 2023-04-03 08:32
#46314 Kort:

Какая проблема посмотреть в теме какие строки пропали, а в коммитах -- что с ними приключилось?

 

Так "перекапываю" теперь в шаблонах.

Просто мужики, форум то чаще посещаем (про себя например), чем коммиты, хотелось бы в будущем предупрееждение на форуме или анонс, мол идет переработка будущего релиза/ работа над зачачами в мастер-ветке, - пользователи, имейте ввиду при обнове. или же кидайте в телеграм

аккаунт удален - не срослось с разработчиками
ушел на другой движок
Dayver
#5 2023-04-03 10:10
#46315 Alex300:

Эту ошибку выловить не удалось. Позже доработаем установщик - добавим защиту от двойного запуска. Хотя я не уверен что проблема в этом. Сам патч, возможно, перепишем чтобы в нем была проверка на существование поля.

Я всё таки остаюсь при своей мысли - уверен дело в повторности применения патча. Причем неважно с чем бы этот патч не был связан - с моими логами или нет, дело не в этом. Как работает обновлятор я никогда не вникал, необходимости небыло, всерагда сам руками это делал. Сейчас возникла идея может дело в версионности и потому переименовал патч. Нужно проверить, если там где ошибка вылазила снова проверить будет ли она повторятся теперь или нет то можно будет найти подсказку в каком моменте обновлятор глючит. 

Pavlo Tkachenko aka Dayver
Alex300
#6 2023-04-03 10:20

По хорошему бы надо установить причину и устранить

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
Dayver
#7 2023-04-03 10:39
#46318 Alex300:

По хорошему бы надо установить причину и устранить

Согласен, но ведь понятно же что не в самом патче дело. А времени разобратся в том как работает обновлятор и почему он сбоит пока нету - не отказыватся же теперь от обновлений которые нуждаются в добавлении новых колонок. 

Добавлено 2 минуты спустя:

Посмотри может переименование патча даст свои плоды. Тогда и текущие обновления заработают как надо и будет подсказка на будущее в какую сторону копать для исправления подобного поведения.

Pavlo Tkachenko aka Dayver
Alex300
#8 2023-04-03 10:47

Я пытаюсь еще раз продебажить инсталлер. Дело не в патче и не в версионности. Но пока не знаю в чем.

Добавлено 1 час спустя:

Немного доработал инсталлер. Добавил проверки:

  • Если другая установка запущена менее 30 секунд назад - даст ошибку, второй процесс не запустит.
  • В пределах одного процесса не даст выполнить один патч более одного раза

Добавлено 6 минут спустя:

Сама ошибка так и не воспроизвелась. Вот если только сначала недостающие поля в БД добавились руками. А потом, спустя какое то время, забыв об этом, запустилось обновление.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
This post was edited by Alex300 (2023-04-03 12:36, 1 year ago)
webitproff
#9 2023-04-03 13:56

Алексей, перезалил всё с репозитория без потери файлов. эпопея продолжается, но строки другие

Fatal error

2023-04-03 13:49

SQL error 42S21: Column already exists: 1060 Duplicate column name 'log_uid'

#0 /system/database.php(372): cot_diefatal('SQL error 42S21...')
#1 /system/database.php(784): CotDB->query('ALTER TABLE `co...')
#2 /system/extensions.php(88): CotDB->runScript('\nINSERT INTO `c...')
#3 /modules/install/inc/install.update.php(245): cot_apply_patches('./setup/siena', '0.9.22')
#4 /install.php(168): include('/var/www/u19845...')

подчеркну, что хостинг reg.ru и это обновля сайт, который сегодня поставил с нуля.

а вот на beget.com обновление прошло без проблем,

и там и там на хостинге конфигурация почти одинаковая...  и какого? sad

аккаунт удален - не срослось с разработчиками
ушел на другой движок
Alex300
#10 2023-04-03 14:33

До обновления в таблице cot_logger было поле log_uid? Можно дамп БД до обновления мне в телегу? Попробую с ним погонять инсталятор.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
webitproff
#11 2023-04-03 14:44

отправил smiley

аккаунт удален - не срослось с разработчиками
ушел на другой движок
Dayver
#12 2023-04-04 03:02
#46321 Alex300:

Я пытаюсь еще раз продебажить инсталлер. Дело не в патче и не в версионности. Но пока не знаю в чем.

Кажется начинаю догадыватся в чем причина. Смотри, когда на сайте установлена версия 0.9.22 и структура у базы от этой 22-ой версии и тут зачем то накатывают файлы мастер ветки (хотя мастер ветка никогда не предназначалась для установки на рабочие сайты, для этого и создаются релизы) и еще и запускают скрипт инсталятор\обновлятор. Скрипт смотри в файл и питается совершить обновление до этой версии. Тоесть пытается применить патч 0.9.22 но поскольку сайт и структура базы и так уже от версии 22 то и получаем на выходе ошибки типа:

Fatal error

2023-03-27 02:27

SQL error 42S21: Column already exists: 1060 Duplicate column name 'log_uid'

#0  cot_diefatal(SQL error 42S21: Column already exists: 1060 Duplicate column name 'log_uid') called at [/var/www/cotontisite.com/system/database.php:368]
#1  CotDB->query(ALTER TABLE `cot_logger` ADD `log_uid` int UNSIGNED NOT NULL DEFAULT '0') called at [/var/www/cotontisite.com/system/database.php:780]
#2  CotDB->runScript(
INSERT INTO `cot_config` (`config_owner`, `config_cat`, `config_order`, `config_name`, `config_type`, `config_value`, `config_default`, `config_variants`, `config_text`) VALUES
('core','main','08','loggerlevel',2,'sec+adm+ext','sec+adm+ext','none,sec,adm,ext,sec+adm,sec+ext,adm+ext,sec+adm+ext,all','');

ALTER TABLE `cot_logger` MODIFY `log_group` varchar(64) DEFAULT 'adm';
ALTER TABLE `cot_logger` ADD `log_uid` int UNSIGNED NOT NULL DEFAULT '0';
ALTER TABLE `cot_logger` ADD `log_type` varchar(32) DEFAULT '';
ALTER TABLE `cot_logger` ADD `log_status` varchar(24) DEFAULT '';
ALTER TABLE `cot_logger` ADD `log_uri` varchar(255) DEFAULT '';

UPDATE `cot_logger` SET `log_group` = 'forums' WHERE `log_group` = 'for';
UPDATE `cot_logger` SET `log_group` = 'users' WHERE `log_group` = 'usr';
UPDATE `cot_logger` SET `log_group` = 'page' WHERE `log_group` = 'pag';) called at [/var/www/cotontisite.com/system/extensions.php:85]
#3  cot_apply_patches(./setup/siena, 0.9.22) called at [/var/www/cotontisite.com/modules/install/inc/install.update.php:245]
#4  include(/var/www/cotontisite.com/modules/install/inc/install.update.php) called at [/var/www/cotontisite.com/install.php:149]

Потому что патч 22 который уже ранее добавил колонку log_uid снова при повторной попытке её добавить вызовет ошибку.

Выходит ты зря (в разрезе текущей ситуации) делал проверку двойного запуска за промежуток времени. В целом этот функционал полезен но сейчас он ситуацию не исправляет.

Идём далее - поскольку инсталятор пытается обновится до 22 версии то и патч 23 он не запускает, а значит на выходе имеем сайт который работает на файлах от будущей 23 версии которым требуются новые колонки в таблицах но патч для перехода к 23 версии не отработал и новые колонки не добавил в базу, а потому и множетсвенные ошибки при работе такой промежуточной версии ядра. Потому неважно с чем бы подобные изменения были связаны (переработка системы протоколирования или что либо другое) итог будет один - криво работающий сайт.

Итого тезисно:

  • Как решение сейчас достаточно просто было загодя обновить версию в ядре.
  • На дальнейшее для себя команде запомнить правило - при первом же комите после релиза обновлять  эту строку. Это не предотвратит совсем ошибок подобного рода но для одиночного перехода от предыдущей релизной версии до мастер ветки (для тестеров) часть проблем уберёт. Повторные попытки обновляться между разными состояними мастер ветки все равно могут вызывать такие ситуации.
  • Еще где то написать предупреждение для пользователей "Если используете мастер ветку то делаете это на свой страх и риск, поскольку она не предназначена для установки на рабочии сайты, для этого выпускаются релизные версии, ибо инсталятор умеет обновлятся только от версии к версии.". Правда и не знаю где его разместить 
  • На будуще запланировать задачу доработать инсталятор что б он умел обрабатывать такие исключения, правда слабо представляется простая реализация такой проверки исключений, причем ради нештатных ситуаций которые не должны происходить с простыми пользователями.

Добавлено 9 минут спустя:

Это опять на уровне догадки на базе всех сообщений об ошибках при использовании текущего когда из репозитория, требует проверки, но версия как мне кажется, очень даже правдоподобная

Добавлено 35 минут спустя:

Перечитал соседние топики с упоминанием такой же проблемы и понял что в тексте выше немного напутал с именами полей - где то шибка из-за log_uri а где то из-за log_uid. Но по сути версия о том в чем причина бага остаётся не изменной.

Pavlo Tkachenko aka Dayver
This post was edited by Dayver (2023-04-04 03:50, 1 year ago)
webitproff
#13 2023-04-04 04:17
#46333 Dayver:
  • Еще где то написать предупреждение для пользователей "Если используете мастер ветку то делаете это на свой страх и риск, поскольку она не предназначена для установки на рабочии сайты, для этого выпускаются релизные версии, ибо инсталятор умеет обновлятся только от версии к версии.". Правда и не знаю где его разместить 

моё личное субъективное, - правильно будет сюда

да и саму статью обновить/переписать в части Обновление с Seditio и Genoa. Насколько просто это актуально, я к тому что бы не запутывать новых пользователей. может пора двигаться дальше? или создать статью отдельную, - конкретно по Siena.

ради одного ну или нескольких человек, как по мне кто еще может использовать версии всех веток котонти до 0.9.19 стоит ли держать информацию на сайте (мануалы), которая новых пользователей может лишь запутать и этим отпугнуть так сказать ;) ?

Добавлено 17 минут спустя:

#46333 Dayver:
#46321 Alex300:

Я пытаюсь еще раз продебажить инсталлер. Дело не в патче и не в версионности. Но пока не знаю в чем.

Кажется начинаю догадыватся в чем причина. Смотри, когда на сайте установлена версия 0.9.22 и структура у базы от этой 22-ой версии и тут зачем то накатывают файлы мастер ветки (хотя мастер ветка никогда не предназначалась для установки на рабочие сайты, для этого и создаются релизы) и еще и запускают скрипт инсталятор\обновлятор. Скрипт смотри в файл и питается совершить обновление до этой версии. Тоесть пытается применить патч 0.9.22 но поскольку сайт и структура базы и так уже от версии 22 то и получаем на выходе ошибки типа ...

Паша, вот смотри, на хостинге бегет.ком запускаю инсталятор

мне четко пишет - "Обновление не требуется"...

это я обновляю то что обновлял вчера из мастер ветки, что в принципе и всегда делал, потому если обновление не требовалось, мне так и сообщалось, ошибок не было и не парился.

инфо из дампа БД

MySQL dump 10.13  Distrib 5.7.17, for Linux (x86_64)
Server version	5.7.21-20

а вот уже на другом хостинге (рег.ру) при тех же шагах - сыпятся ошибки.

тут БД

MySQL dump 10.13  Distrib 5.7.27-30, for Linux (x86_64)
Server version	5.7.27-30

php 8.1  в обоих на сайте

аккаунт удален - не срослось с разработчиками
ушел на другой движок
This post was edited by webitproff (2023-04-04 04:34, 1 year ago)
Alex300
#14 2023-04-04 04:53

При применении патча система ориентируется на строку revision из таблицы cot_updates. Там все просто. Если версия патча старше чем от что в этой таблице, то патч применяется. Потом версия последнего патча записывается в эту таблицу.

Это значение используется только для вывода версии ядра в админке.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
webitproff
#15 2023-04-04 05:17
#46331 Alex300:

До обновления в таблице cot_logger было поле log_uid? Можно дамп БД до обновления мне в телегу? Попробую с ним погонять инсталятор.

не трать время, я уже столько перепробывал, запутался сам, и не хочу отвлекать и путать разработчиков.

время придет к релизу - будем разгребать ))))

Добавлено 6 минут спустя:

У меня один вопрос, прошу четко сказать - да/нет.

1. ставлю я релиз (именно релиз) последний с нуля. сайт поставил и заполнил там тайтлы, локализацию, принудительную тему для всех и пока всё.

2. много чего обновлено после релиза (форум например). короче перезаписываю полностью движок новыми файлами

собственно вопрос - "install.php" можно спокойно не запускать до следующе релиза и не бояться, что это вызовет "кривизну" в работе движка в паре с БД?

аккаунт удален - не срослось с разработчиками
ушел на другой движок
This post was edited by webitproff (2023-04-04 05:26, 1 year ago)

12>>>