Jump to content

Проблемы при обновлении форума с версии IPB 3.4 до версии IPB 4.7

Featured Replies

Добрый день, вот и настал момент обновить форум. Но как обычно без проблем не обходится при попытки обновления с версии 3.4 до версии 4.7 получаю следующую ошибку:

Unknown column 'field_' in 'field list'
/var/www/animeforum/applications/core/setup/upg_40000/upgrade.php::724

INSERT INTO `an_core_pfields_content` ( `member_id`, `field_` ) VALUES ( ?, ? ) ON DUPLICATE KEY UPDATE `member_id`=VALUES(`member_id`), `field_`=VALUES(`field_`

 

2024-05-02025250.thumb.png.41c130b749d5690ad80d79af7f1a7593.png

Проблемная строка из файла обновления:

\IPS\Db::i()->insert( 'core_pfields_content', array( 'member_id' => $row['member_id'], 'field_' . $_SESSION['aboutMe_Field'] => $aboutMe ), TRUE );

 

Link to comment
https://ipbmafia.ru/topic/27035-problemy-pri-obnovlenii-foruma-s-versii-ipb-34-do-versii-ipb-47/
Share on other sites
2 минуты назад, Respected сказал:

Да, я почитал этот топик, но мне осталось не понятным, что помогло автору. У меня рабочая среда облачный Линукс Centos 9 Stream, Apache 2.4, PHP 8.2, MySQL 8

Автор вроде бы разворачивал локально у себя на машине и ему советовали разворачивать на Линукс, у меня уже всё на Линукс.

1 минуту назад, Seirei сказал:

Да, я почитал этот топик, но мне осталось не понятным, что помогло автору. У меня рабочая среда облачный Линукс Centos 9 Stream, Apache 2.4, PHP 8.2, MySQL 8

Автор вроде бы разворачивал локально у себя на машине и ему советовали разворачивать на Линукс, у меня уже всё на Линукс.

Проверь что в сессии хранится у тебя. Типа var_dump( $_SESSION ); Можно найти поле Обо мне вручную в таблице core_pfields_data и вручную занести его ID в сессию:

$_SESSION['aboutMe_Field'] = $ID;

3 минуты назад, Respected сказал:

Проверь что в сессии хранится у тебя. Типа var_dump( $_SESSION ); Можно найти поле Обо мне вручную в таблице core_pfields_data и вручную занести его ID в сессию:

$_SESSION['aboutMe_Field'] = $ID;

Переменную проверю сейчас

Да вот не вижу я у себя в таблице такого поля:
https://content.invisioncic.com/a319035/monthly_2024_05/image.png.aa3fdc8d5cdee1596118a5e74ed98393.png

Тогда его нужно создать, вот скрипт создания этого поля:

/* Groups */
foreach( \IPS\Db::i()->select( 'g_id, g_title', 'core_groups' ) as $group )
{
    \IPS\Lang::saveCustom( 'core', "core_group_{$group['g_id']}", $group['g_title'] );
}

\IPS\Db::i()->dropColumn( 'core_groups', 'g_title' );

/* Set tables */
\IPS\Db::i()->dropTable( 'core_members_temp', TRUE );
\IPS\Db::i()->createTable( $membersDefinition );

/* Create the about me profile field group */
$group	= \IPS\Db::i()->insert( 'core_pfields_groups', array( 'pf_group_key' => 'profile_40_fields', 'pf_group_name' => "Profile Fields" ) );
\IPS\Lang::saveCustom( 'core', 'core_pfieldgroups_' . $group, "Profile Fields" );

/* Create the about me profile field */
$aboutMe	= new \IPS\core\ProfileFields\Field;
$aboutMe->group_id		= $group;
$aboutMe->type			= "Editor";
$aboutMe->content		= NULL;
//$aboutMe->multiple		= FALSE;
$aboutMe->not_null		= FALSE;
$aboutMe->max_input		= 0;
$aboutMe->input_format	= NULL;
$aboutMe->search_type	= "loose";
$aboutMe->format		= NULL;
$aboutMe->admin_only	= FALSE;
$aboutMe->show_on_reg	= FALSE;
$aboutMe->member_edit	= TRUE;
$aboutMe->member_hide	= FALSE;

try
{
    $aboutMe->save();

    /* We have to store the title for now so step6 won't wipe it out */ 
    \IPS\Db::i()->update( 'core_pfields_data', array( 'pf_title' => "About Me" ), "pf_id=" . $aboutMe->id );

    \IPS\Lang::saveCustom( 'core', 'core_pfield_' . $aboutMe->id, "About Me" );
    \IPS\Lang::saveCustom( 'core', 'core_pfield_' . $aboutMe->id . '_desc', "" );
}
catch( \Exception $ex )
{
    \IPS\Log::log( $ex, 'upgrade' );
}

 

@Seirei, чуть подробнее опишите ,шаг за шагом,кАк обновляли.

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

Как бы я бновлялся?

Сначала обновился бы до последней,переходящей, 3.* версии,затем уже перескочил на первую 4.*, ну а далее уже обычным способом до актуальной. И не забывайте,кстати,обновлять и версию рнр на актуальную для версий IPSа.

4 минуты назад, Respected сказал:

Тогда его нужно создать, вот скрипт создания этого поля:

 

Так это же скрипт из файле обновления и он выше идёт в очереди. Вы думаете он не выполняется?

Группа полей у меня создаётся:

image.png.e9e853b8198d81fff85e896d5a4b7757.png

Я так понимаю у меня не срабатывает эта часть скрипта, которая должна создать поле About Me:

image.thumb.png.0b05fde98e7125c2ec514f092e064ad2.png

 

AHristich , добрый день. У меня до этого стояла последняя версия IPB 3, а именно IPB 3.4.9. Стояла официальна русская версия с лицензией, тогда ещё проданная http://www.ibresource.ru/.

Сейчас ставлю тоже официальную версию, но уже купленную напрямую у https://invisioncommunity.com/

https://content.invisioncic.com/a319035/monthly_2024_05/image.png.8e3017f65acb4f4ee8ccc0644394278a.png

https://content.invisioncic.com/a319035/monthly_2024_05/image.png.8e3017f65acb4f4ee8ccc0644394278a.png

Если группа добавлена, можно вручную добавить поле прямо в phpmyadmin

3 часа назад, Respected сказал:

Если группа добавлена, можно вручную добавить поле прямо в phpmyadmin

А не подскажите как подгодать момент, чтобы внести изменения? Подождать ошибки? Или заранее

Я разобрался с этой ошибкой, проблема была в таблице pfields_data, а именно в столбцах pf_title и pf_desc. Не было задано значений по умолчанию, отчего процедура сохранения новой записи вываливалась с ошибкой. Я добавил значение по умолчанию NULL для обоих столбцов и процесс обновления продолжился нормально. Но я пока вынужден был прервать его. Вечером попробую полностью обновить форум.

В итоге обновление прошло удачно, больше ошибок не было. Сейчас правлю некоторые баги. У меня ошибка с отправкой электронных писем:
 

Creation of dynamic property IPS\Email\Outgoing\Php::$language is deprecated

https://ipbskins.ru/uploads/monthly_2024_05/image.thumb.png.cd57aaefcff5360614a7e763bc389db9.png

 

Кто-то может подсказать в чём дело?

Может через smtp слать, а не через php? 

Edited by Zero108

 Как оказалось, то IPB 4 не поддерживает PHP 8.2, переключился на PHP 8.1

Но в итоге теперь другая ошибка:

Function strftime() is deprecated

image.thumb.png.9685dc18c25ec27c1c5804f56c9e68fe.png

1 час назад, Zero108 сказал:

Может через smtp слать, а не через php?

А через пхп нельзя настроить?

Edited by Seirei

Лучше перезалить файлы, похоже некоторых не хватает.

3 часа назад, Respected сказал:

Лучше перезалить файлы, похоже некоторых не хватает.

Это первое, что было сделано. Тут явно какой-то косяк с PHP, может в конфигурационном файле php.ini что-то поправить?

Так я же уже поменял на PHP 8.1, а там последний ответ:

The error will not go away from the logs. That error will only be generated on 8.2

Respected А если не секрет, этот форум работает на какой версии PHP?

11 часов назад, Seirei сказал:

Как оказалось, то IPB 4 не поддерживает PHP 8.2, переключился на PHP 8.1

IPS 4.6.12 спокойно и без ошибок фурычит на рнр 8.0,8.1,8.2

58 минут назад, AHristich сказал:

IPS 4.6.12 спокойно и без ошибок фурычит на рнр 8.0,8.1,8.2

У меня проблема только с отправкой e-mail, на 8.2:

image.png.a42c70892026bae65a3851fb30b003e6.thumb.png.863e17b0287ce0955be9408a369eed6a.png

На 8.1:

image.png.68a95e5bdf8260cfd6562f4f31b6c49b.thumb.png.6d9ca2f8dc4e51906330bb4f48a7c567.png

Edited by Seirei

20 часов назад, Respected сказал:

php 8.2.18

А у вас отправка e-mail настроена через PHP или SMTP?

В общем по глупости забыл поставить sendmail.

Edited by Seirei

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.