После переезда случилась беда

Все вопросы/проблемы по установке и использовании.
Alex.Zin
Сообщения: 41
Зарегистрирован: 30 дек 2019, 07:28
Имя: Alex
Откуда: Россия Норильск

После переезда случилась беда

Сообщение Alex.Zin »

После переезда на новый сервер произошло жуткое...
При попытке добавления записи вылетает следующее:
Database Error: 1305 - FUNCTION baza.rukovoditel_days_diff does not exist
Query: select rukovoditel_days_diff(e.field_111,e.field_222,'1,7','','1') as field_333 from app_entity_2 e where e.id=1111
Page: /support/index.php?module=items/&action=save
поля e.field_111 и e.field_222 там стоит авто процессы но они при создании записей не затрагиваются.
поле field_333 это поле высчитывает разницу в днях между e.field_222-e.field_111
app_entity_2 это сущность в которой происходит добавление
e.id=1111 это номер записи который система пыталась добавить

Как итог запись создается, на странице списка записей она пустая=(
Если зайти в нее то она заполнена, тоже самое если нажать редактировать со страницы списка записей.

Между переездом появилось обновление и переезжал фактически на обновлённую версию Руководителя(с 2.6 на 2.7), обновления базы запускал и для дополнения и для основной части программы.
Аватара пользователя
support
Техническая поддержка
Сообщения: 9088
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: После переезда случилась беда

Сообщение support »

При переносе базы не перенесли функции бд, такие как rukovoditel_days_diff
Откройте поле Разница в днях и эта функция создаться автоматически.
Alex.Zin
Сообщения: 41
Зарегистрирован: 30 дек 2019, 07:28
Имя: Alex
Откуда: Россия Норильск

Re: После переезда случилась беда

Сообщение Alex.Zin »

Спасибо огромное, реально помогло, Интересно то, что я частично открывал Настройки даных полей.
Так или иначе, все решилось, всех вам благ!
ЗЫ: небольшую финансовую благодарность позже скину :)
mitrich
Сообщения: 27
Зарегистрирован: 30 май 2018, 08:29
Имя: Дмитрий Мухановский
Откуда: Россия, Самара

Re: После переезда случилась беда

Сообщение mitrich »

А могли бы точнее подсказать, куда именно зайти на сайте, чтобы найти поле "Разница в днях".
Хочу сделать копию сайта и возникла такая ошибка.
nruslan2
Сообщения: 2438
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow
Контактная информация:

Re: После переезда случилась беда

Сообщение nruslan2 »

В настройки любой сущности - и просто добавить поле тип Разница в днях
triadax
Сообщения: 135
Зарегистрирован: 14 фев 2020, 09:59
Имя: Сергей
Откуда: Россия

Re: После переезда случилась беда

Сообщение triadax »

А как правильно переносить базу, чтобы всё цеплялось? Такая же беда возникла.
Аватара пользователя
support
Техническая поддержка
Сообщения: 9088
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: После переезда случилась беда

Сообщение support »

triadax
Сообщения: 135
Зарегистрирован: 14 фев 2020, 09:59
Имя: Сергей
Откуда: Россия

Re: После переезда случилась беда

Сообщение triadax »

support писал(а): 04 май 2022, 16:23 https://docs.rukovoditel.net.ru/index.php?p=7
Так всё по инструкции и делается. Только вот та же самая ошибка вылезла на новом сервере. Обновление "разницы во времени" конечно решило проблему, но время то на поиск исправления ошибки затрачено.
polla
Спонсор
Спонсор
Сообщения: 35
Зарегистрирован: 09 сен 2020, 21:37
Имя: Илья
Откуда: Россия

Re: После переезда случилась беда

Сообщение polla »

а как победить это, не изменяя глобальные настройки mysql

Database Error: 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
Query: CREATE FUNCTION `rukovoditel_days_diff`(`start_date` INT, `end_date` INT, `exclude_days` VARCHAR(64), `exclude_last_day` TINYINT(1), `exclude_holidays` TINYINT(1)) RETURNS int(11) BEGIN DECLARE days_diff INT; DECLARE inc_days TINYINT; SET days_diff=0; IF start_date>0 and end_date>0 and end_date>=start_date THEN #skip while if no restriction IF length(exclude_days)=0 and exclude_holidays!=1 THEN SET days_diff = (end_date-start_date)/86400; IF exclude_last_day!=1 THEN SET days_diff = days_diff+1; END IF; RETURN days_diff; END IF; WHILE FROM_UNIXTIME(start_date,'%Y-%m-%d')<=FROM_UNIXTIME(end_date,'%Y-%m-%d') DO SET inc_days=1; #exclude day of week IF find_in_set(DAYOFWEEK(FROM_UNIXTIME(start_date,'%Y-%m-%d')),exclude_days) THEN SET inc_days=0; END IF; #exclude last day IF exclude_last_day=1 and FROM_UNIXTIME(start_date,'%Y-%m-%d')=FROM_UNIXTIME(end_date,'%Y-%m-%d')THEN SET inc_days=0; END IF; #exclude holidays IF exclude_holidays=1 THEN SET @start_date_var = FROM_UNIXTIME(start_date,'%Y-%m-%d'); SET @is_holiday = (select count(*) from app_holidays h where h.start_date<= @start_date_var and h.end_date>=@start_date_var); if @is_holiday!=0 THEN SET inc_days=0; END if; END IF; IF inc_days=1 THEN SET days_diff =days_diff+1; END IF; SET start_date = start_date+86400; END WHILE; END IF; RETURN days_diff; END;
Page: /index.php?module=entities/fields_configuration
#0 includes/functions/database.php(99): mysqli_query(Object(mysqli), '\nCREATE FUNCTIO...')
#1 includes/classes/fieldstypes/fieldtype_days_difference.php(165): db_query('\nCREATE FUNCTIO...')
#2 includes/classes/fieldstypes/fieldtype_days_difference.php(53): fieldtype_days_difference::prepare_procedure()
#3 modules/entities/actions/fields_configuration.php(36): fieldtype_days_difference->get_configuration(Array)
#4 index.php(31): require('/var/www/сайт...')
#5 {main}
Аватара пользователя
support
Техническая поддержка
Сообщения: 9088
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: После переезда случилась беда

Сообщение support »

Если хостинг не хочет включать это разрешение, попросить что хотя бы для ваше БД добавили эту функцию.
Ответить