Страница 1 из 4

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

Добавлено: 29 окт 2020, 14:49
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), обновления базы запускал и для дополнения и для основной части программы.

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

Добавлено: 29 окт 2020, 15:38
support
При переносе базы не перенесли функции бд, такие как rukovoditel_days_diff
Откройте поле Разница в днях и эта функция создаться автоматически.

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

Добавлено: 29 окт 2020, 18:41
Alex.Zin
Спасибо огромное, реально помогло, Интересно то, что я частично открывал Настройки даных полей.
Так или иначе, все решилось, всех вам благ!
ЗЫ: небольшую финансовую благодарность позже скину :)

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

Добавлено: 13 апр 2021, 16:35
mitrich
А могли бы точнее подсказать, куда именно зайти на сайте, чтобы найти поле "Разница в днях".
Хочу сделать копию сайта и возникла такая ошибка.

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

Добавлено: 13 апр 2021, 18:40
nruslan2
В настройки любой сущности - и просто добавить поле тип Разница в днях

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

Добавлено: 04 май 2022, 15:50
triadax
А как правильно переносить базу, чтобы всё цеплялось? Такая же беда возникла.

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

Добавлено: 04 май 2022, 16:23
support

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

Добавлено: 04 май 2022, 16:28
triadax
support писал(а): 04 май 2022, 16:23 https://docs.rukovoditel.net.ru/index.php?p=7
Так всё по инструкции и делается. Только вот та же самая ошибка вылезла на новом сервере. Обновление "разницы во времени" конечно решило проблему, но время то на поиск исправления ошибки затрачено.

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

Добавлено: 12 дек 2023, 15:10
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}

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

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