Problem z aktualizacją DB

Zaczęty przez Swoop, 16 Sierpień 2021, 12:04

0 użytkowników i 1 Gość przegląda ten wątek.

Swoop

Witam wszystkich,

Mam problem z aktualizacją DB, Po aktualizacji skryptu do 2.0.18 i próby aktualizacji bazy pojawia sie informacja:

CytatDatabase Changes
Executing database changes
Please be patient - this may take some time on large forums. The time elapsed increments from the server to show progress is being made!
Executing: "Changing column names." (1 of 42)

!!
Error!
Server has not responded for 30 seconds. It may be worth waiting a little longer or otherwise please click here to try this step again

Niestety "try again" nic nie daje

Mam jeszcze coś takiego:
Cytat
Warning: Cannot modify header information - headers already sent by (output started at /forum4/Settings.php:1) in /forum4/upgrade.php on line 830

Warning: Cannot modify header information - headers already sent by (output started at /forum4/Settings.php:1) in /forum4/upgrade.php on line 831

Warning: Cannot modify header information - headers already sent by (output started at /forum4/Settings.php:1) in /forum4/upgrade.php on line 832

Proszę o pomoc bo już nie mam pomysłów a plik upgrade.php z najnowszej wersji

Dodam, ze skrypt forum jest czysty z najnowszej wersji

Paweł

Adrian

Z jakiej wersji był robiony upgrade?
the simplest solution is most likely the right one

Swoop

Cytat: Adrian w 16 Sierpień 2021, 18:09
Z jakiej wersji był robiony upgrade?

Opcje były 3:
1. Najpierw zrobiłem update skryptu z 0.15 do 0.18 a później odpaliłem upgrade
2. Wgrałem kopię bazy na nową bazę ze skryptem czystym 0.18 + upgrade
3. Wgrałem kopię bazy ze skryptem 0.15 + upgrade

Za każdym razem zatrzymuje się na ok 0,3% i informacji o zmianie nazwy kolumn

Adrian

ok, a czy jest jakiś szczególny powód takiego aktualizowania?  Wygodniej i można zaktualizować forum instalując po kolei  kolejne łatki  - tak jak modyfikacje. Miesiąc temu robiłem dokładnie taki update innego forum i nie było żadnego problemu.

Z tego co wiem między 2.0.15 a 2.0.18 nie było zmian w bazie danych, więc po wgraniu plików powinno wszystko działać. +

W mojej opinii komunikat o błędzie aktualizacji DB można w tej sytuacji ignorować.
the simplest solution is most likely the right one

Swoop

aktualizacja skryptu była bo już na 15tkę przyszedł czas i postanowiłem wgrać aktualną.

Wgrywałem aktualizacje poprzez pakiety. Tak czy inaczej teraz forum działa na 18tce i starej bazie, ale... nic nie można napisać. Pojawia się informacja:

CytatField 'user_agent' doesn't have a default value
Plik: /forum/Sources/Subs-Post.php
Linia: 1839

Uwaga: Wygląda na to, że twoja baza danych wymaga uaktualnienia. Pliki forum mają obecnie wersję SMF 2.0.18, podczas gdy baza danych jest w wersji 2.0.5. Powinieneś uruchomić najnowszą wersję upgrade.php.

Adrian

Co masz we wskazanej linii? Wstaw w zawartość okienka z kodem którego dotyczy błąd (kliknij na nazwę pliku w błędzie)
the simplest solution is most likely the right one

Swoop

// Insert the post.
$smcFunc['db_insert']('',
'{db_prefix}messages',
array(
'id_board' => 'int', 'id_topic' => 'int', 'id_member' => 'int', 'subject' => 'string-255', 'body' => (!empty($modSettings['max_messageLength']) && $modSettings['max_messageLength'] > 65534 ? 'string-' . $modSettings['max_messageLength'] : 'string-65534'),
'poster_name' => 'string-255', 'poster_email' => 'string-255', 'poster_time' => 'int', 'poster_ip' => 'string-255',
'smileys_enabled' => 'int', 'modified_name' => 'string', 'icon' => 'string-16', 'approved' => 'int',
),
array(
$topicOptions['board'], $topicOptions['id'], $posterOptions['id'], $msgOptions['subject'], $msgOptions['body'],
$posterOptions['name'], $posterOptions['email'], time(), $posterOptions['ip'],
$msgOptions['smileys_enabled'] ? 1 : 0, '', $msgOptions['icon'], $msgOptions['approved'],
),
array('id_msg')
);
$msgOptions['id'] = $smcFunc['db_insert_id']('{db_prefix}messages', 'id_msg');


w linii 1839 jest:       array('id_msg')

Adrian

w tym kodzie nie ma nic o polu z błędu, kliknąłeś w logach błędów na plik czy skopiowałeś to z serwera?
the simplest solution is most likely the right one

Swoop

Na stronie błędu jedyna opcja klikalna to Menu forum na górze i napis Wróć na dole

Adrian

masz to sprawdzić w logach błędów:
the simplest solution is most likely the right one

Swoop


Adrian

No to kliknij w to miejsce, wyskoczy okno, skopiuj kod i wklej go tutaj...

the simplest solution is most likely the right one

Swoop


1819: }
1820:
1821: // It's do or die time: forget any user aborts!
1822: $previous_ignore_user_abort = ignore_user_abort(true);
1823:
1824: $new_topic = empty($topicOptions['id']);
1825:
1826: // Insert the post.
1827: $smcFunc['db_insert']('',
1828: '{db_prefix}messages',
1829: array(
1830: 'id_board' => 'int', 'id_topic' => 'int', 'id_member' => 'int', 'subject' => 'string-255', 'body' => (!empty($modSettings['max_messageLength']) && $modSettings['max_messageLength'] > 65534 ? 'string-' . $modSettings['max_messageLength'] : 'string-65534'),
1831: 'poster_name' => 'string-255', 'poster_email' => 'string-255', 'poster_time' => 'int', 'poster_ip' => 'string-255',
1832: 'smileys_enabled' => 'int', 'modified_name' => 'string', 'icon' => 'string-16', 'approved' => 'int',
1833: ),
1834: array(
1835: $topicOptions['board'], $topicOptions['id'], $posterOptions['id'], $msgOptions['subject'], $msgOptions['body'],
1836: $posterOptions['name'], $posterOptions['email'], time(), $posterOptions['ip'],
1837: $msgOptions['smileys_enabled'] ? 1 : 0, '', $msgOptions['icon'], $msgOptions['approved'],
1838: ),
==>1839: array('id_msg')
1840: );
1841: $msgOptions['id'] = $smcFunc['db_insert_id']('{db_prefix}messages', 'id_msg');
1842:
1843: // Something went wrong creating the message...
1844: if (empty($msgOptions['id']))
1845: return false;
1846:
1847: call_integration_hook('integrate_dquote_notification', array($msgOptions, $topicOptions, $posterOptions)); // dQuote notification hook
1848:
1849: // Fix the attachments.
1850: if (!empty($msgOptions['attachments']))
1851: $smcFunc['db_query']('', '
1852: UPDATE {db_prefix}attachments
1853: SET id_msg = {int:id_msg}
1854: WHERE id_attach IN ({array_int:attachment_list})',
1855: array(
1856: 'attachment_list' => $msgOptions['attachments'],
1857: 'id_msg' => $msgOptions['id'],
1858: )
1859: );

Adrian

Cytat: Swoop w 16 Sierpień 2021, 12:04
Dodam, ze skrypt forum jest czysty z najnowszej wersji


no i to jest nieprawda, bo masz w kodzie zmiany z modyfikacji. W tej chwili nie wiem co jeszcze można sprawdzić, najlepiej jakbym miał dostęp do plików i bazy...

Najprościej i najszybciej będzie przywrócić forum do stanu przed aktualizacją i zainstalować po kolei pakiety aktualizacji przez menadzer pakietów. Nie używaj pliku upgrade.php - nie potrzebujesz tego, nie ma zmian w bazie danych pomiędzy wersjami SMF 2.0.X, to że w błędach pojawia się informacja o konieczności aktualizacji bazy to nic nie znaczy, należy w 99% przypadków to ignorować.
the simplest solution is most likely the right one

Swoop

#14
Powrót do 2.0.15 skończył się tak:


1796: }
1797:
1798: // It's do or die time: forget any user aborts!
1799: $previous_ignore_user_abort = ignore_user_abort(true);
1800:
1801: $new_topic = empty($topicOptions['id']);
1802:
1803: // Insert the post.
1804: $smcFunc['db_insert']('',
1805: '{db_prefix}messages',
1806: array(
1807: 'id_board' => 'int', 'id_topic' => 'int', 'id_member' => 'int', 'subject' => 'string-255', 'body' => (!empty($modSettings['max_messageLength']) && $modSettings['max_messageLength'] > 65534 ? 'string-' . $modSettings['max_messageLength'] : 'string-65534'),
1808: 'poster_name' => 'string-255', 'poster_email' => 'string-255', 'poster_time' => 'int', 'poster_ip' => 'string-255',
1809: 'smileys_enabled' => 'int', 'modified_name' => 'string', 'icon' => 'string-16', 'approved' => 'int',
1810: ),
1811: array(
1812: $topicOptions['board'], $topicOptions['id'], $posterOptions['id'], $msgOptions['subject'], $msgOptions['body'],
1813: $posterOptions['name'], $posterOptions['email'], time(), $posterOptions['ip'],
1814: $msgOptions['smileys_enabled'] ? 1 : 0, '', $msgOptions['icon'], $msgOptions['approved'],
1815: ),
==>1816: array('id_msg')
1817: );
1818: $msgOptions['id'] = $smcFunc['db_insert_id']('{db_prefix}messages', 'id_msg');
1819:
1820: // Something went wrong creating the message...
1821: if (empty($msgOptions['id']))
1822: return false;
1823:
1824: call_integration_hook('integrate_dquote_notification', array($msgOptions, $topicOptions, $posterOptions)); // dQuote notification hook
1825:
1826: // Fix the attachments.
1827: if (!empty($msgOptions['attachments']))
1828: $smcFunc['db_query']('', '
1829: UPDATE {db_prefix}attachments
1830: SET id_msg = {int:id_msg}
1831: WHERE id_attach IN ({array_int:attachment_list})',
1832: array(
1833: 'attachment_list' => $msgOptions['attachments'],
1834: 'id_msg' => $msgOptions['id'],
1835: )
1836: );


Wersja PHP: 7.3 choć z 7.4 to samo... na 8.0 wcale rzuca innym błędem