Jump to content

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

Featured Replies

Posted
comment_204173

Добрый день, вот и настал момент обновить форум. Но как обычно без проблем не обходится при попытки обновления с версии 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 );

 

  • Author
comment_204175
2 минуты назад, Respected сказал:

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

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

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

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

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

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

$_SESSION['aboutMe_Field'] = $ID;

  • Author
comment_204178
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

comment_204179

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

/* 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' );
}

 

comment_204180

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

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

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

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

  • Author
comment_204181
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

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

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

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

  • Author
comment_204197

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

  • Author
comment_204241

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

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

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

 

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

  • Author
comment_204246

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

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

Function strftime() is deprecated

image.thumb.png.9685dc18c25ec27c1c5804f56c9e68fe.png

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

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

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

Edited by Seirei

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

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

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

  • Author
comment_204256

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

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

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

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

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

  • Author
comment_204263
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

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.