PDA

Zobacz pełną wersję : Wersja schematu bazy danych nie pasuje do wersji CMS - Joomla! 3.6.5



JaYmZ
28-11-2018, 01:13
Witam.
Mam problem z aktualizacją CMS Joomla! z wersji 3.6.5 do wyższej, ponieważ ktoś zaniedbał wcześniej migrację z 2.5 do 3.x - nie naprawił błędów struktury bazy danych i teraz wita mnie taki oto monit:



Wersja schematu bazy danych (3.6.5) nie pasuje do wersji CMS (3.6.3-2016-08-16).
Tabela 'jos_content' ma niepoprawny typ albo atrybut w kolumnie 'title_alias' z typem VARCHAR(255). (Z pliku 1.7.3-2011-10-15.sql.)
Tabela 'jos_weblinks' ma niepoprawny typ albo atrybut w kolumnie 'alias' z typem VARCHAR(255). (Z pliku 1.7.3-2011-10-15.sql.)
Tabela 'jos_content' ma niepoprawny typ albo atrybut w kolumnie 'title_alias' z typem VARCHAR(255). (Z pliku 1.7.4-2011-11-23.sql.)
Tabela 'jos_session' ma niepoprawny typ albo atrybut w kolumnie 'session_id' z typem varchar(191). (Z pliku 3.5.0-2015-07-01.sql.)
Tabela 'jos_redirect_links' ma niepoprawny typ albo atrybut w kolumnie 'old_url' z typem VARCHAR(2048). (Z pliku 3.5.0-2016-03-01.sql.)
Tabela 'jos_redirect_links' ma niepoprawny typ albo atrybut w kolumnie 'new_url' z typem VARCHAR(2048);. (Z pliku 3.5.0-2016-03-01.sql.)
Tabela 'jos_redirect_links' ma niepoprawny typ albo atrybut w kolumnie 'new_url' z typem VARCHAR(2048);. (Z pliku 3.6.0-2016-04-06.sql.)
Podstawowe tabele bazy danych Joomla nie zostały jeszcze przekonwertowane do UTF-8 Multibyte (utf8mb4).


Nie dysponuję backupem wersji > 2.5 < 3.6, aby wykonać porządnie stopniową migrację. Opcja 'Napraw' nie zdaje egzaminu.

Mam przed sobą strukturę bazy danych na czystej instalce Joomli! 3.6.5 i porównuję ją z tą, w której mam błędy. Próbowałem zmienić w tabeli jos_content atrybut alias na varchar(400), ale pojawiają się 2 kolejne błędy.
Coś robię źle.
Do tej pory nie miałem aż takich kłopotów z bazą danych i nie wykonywałem napraw, więc proszę o wyrozumiałość i wskazówkę, co z tym fantem zrobić.

Z góry dziękuję za zainteresowanie moim tematem i pomoc.

zwiastun
28-11-2018, 11:27
Wykonać nową instalację Joomla, nową instalację rozszerzeń, następnie przenosić do nowej bazy danych tylko dane.

JaYmZ
28-11-2018, 11:40
Dziękuję za odpowiedź.
Nowej instalacji i przenoszenia danych najbardziej się obawiałem, ale miałem cichą nadzieję, że może jakoś da się poprawić schemat bazy danych - teoretycznie aż tak dużo błędów nie ma.

Czy narzędzie Admin Tools ma wbudowane ficzery, umożliwiające export danych z tabel starej bazy i bezpieczny (bez zgubienia kluczy obcych) import do nowej?
Jeśli nie, co polecisz do wykonania tego zadania?

zwiastun
28-11-2018, 11:57
Tworzysz sobie drugą instalację Joomla, a jeśli gdzieś jest problem z tabelami danych rozszerzeń, to także instalujesz te rozszerzenia.
Ustawiasz taki sam przedrostek nazw tabel, jak w istniejącej instalacji.
Następnie korzystając z narzędzi phpMyAdmina
- wykonujesz zrzut danych z tabel z błędami. Wybierasz opcję: "dołączaj nazwy kolumn w każdym zapytaniu INSERT", aby poprawnie umieścić je później w nowych czystych tabelach
- czyścisz z danych tabele w nowej instalacji Joomla
- importujesz dane do tych czystych tabel
- zmieniasz w bazie danych nazwy starych tabel np. dodają przyrostek _old
- kopiujesz do tej bazy nowo stworzone tabele z danymi.
W ten sposób doprowadzasz do sytuacji, że w bazie masz poprawne schematy tabel.

JaYmZ
28-11-2018, 12:04
Dzięki wielkie za poświęcony czas i konkretną odpowiedź.
Jeśli napotkam jakieś problemy podczas przenoszenia danych, pozwolę sobie tu zajrzeć i napisać stosowny post.
A tymczasem pozdrawiam.

Gall Anonim
28-11-2018, 16:34
Po pierwsze wygląda na to że problem jest o wiele bardziej zadawniony - bo najwyraźniej witryna była migorwana kiedyś z Joomla 1..x do 2.5.x
Albo stawiana na migrowanym demo.
W zasadzie zrobiłbym kopię.
Postawił równoległy oryginał czystej wersji Joomla.
Wyeksportował artykuły za pomocą J2XML z obecnej do czystej.
A potem zaimportował zXML'a do czystej i podmienił tabele poprzez kopię z czystej (nowej już nie czystej) do obecnej.
W zasadzie jakieś 15 minut roboty bo tabele redirecta należy wyczyścić (z tego możesz zrezygnować bo mało kto używa ich w ogóle a jeszcze mniej osób świadomie wykorzystuje) ponieważ zazwyczaj nie ma tam nic istotnego.
To w zasadzie tak samo jak opisał Zwiastun po za tym że z tabelami po za content nie bawiłbym się z danymi :-)

JaYmZ
28-11-2018, 17:00
Gall Anonim, dziękuję za przedstawienie swojego punktu widzenia i instrukcję obsługi.
Późnym wieczorem będę walczył z tym schematem bazy danych i migracją danych.

grzesiek_w
28-11-2018, 17:33
Wykonaj kopię Akeeba Backup a potem przywróć to Kickstartem
wtedy na jednym z ekranów zaznacz te dwie opcje

Force UTF-8 collation on database
Force UTF-8 collation on tables

tu inny błąd ale to rozwiązanie pomogło
https://www.kasai1.com/start-strony-internetowe-lublin-pulawy/blog-strony-internetowe/244-specified-key-was-too-long-max-key-length-is-767-bytes-blad-podczas-przywracania-strony-za-pomoca-akeeba-kickstart.html

JaYmZ
28-11-2018, 17:45
grzesiek_w, przedstawiłeś ciekawy pomysł na reanimację bazy danych, warty wypróbowania. Skorzystam z tej podpowiedzi i zobaczę, jak to się będzie sprawowało na posiadanej przeze mnie strukturze danych.

W każdym razie dam znać, czy mój problem został rozwiązany, biorąc pod uwagę Wasze sugestie i porady. Punkty pewnie też polecą w górę za poświęcony czas i pomoc.

JaYmZ
29-11-2018, 05:00
Panowie, jestem już po zmianie schematu bazy i migracji danych. Wykorzystałem sposób, który zaproponował zwiastun. Było trochę gimnastyki, ale wygląda na to, że wszystko działa. CMS zaktualizowany do wersji 3.9.1.
Pozostałe porady również okazały się przydatne, ponieważ wykorzystałem je w dwóch innych projektach opartych o CMS Joomla! 3.8.13 i 3.7.
Dziękuję bardzo za poświęcony czas i pomoc. Zgodnie z obietnicą lecą na Wasze konta punkty.

Pozdrawiam.