Upgrade z 1.5.3 na 1.6.9+

Upgrade z 1.5.3 na 1.6.9+

autor Miroslav Hrdý -
Počet odpovědí: 12
Dobrý den,

při realizaci upgrade Moodle mi převod databázi neprojde korektně, chybovou zprávu jsem uložil do přílohy.
Takto upgrade informuje asi 20x, že nemůže vytvořit nějakou tabulku v databázi.

Stejné chování při pokusu upgrade na 1.7.7+
Může být důvodem to, že je nutné upgradovat na např.: 1.6.1 a potom na další?
Na moodle.org jsem se dočetl, že můžu použít přímo buďto 1.6.9+ nebo 1.7.7+

Jak tedy na to? Zajisté MySQL a PHP mám zaktualizované.


Děkuji
Příloha chyba_upgrade_moodle.jpg
Počet hodnocení: -
V odpovědi na Miroslav Hrdý

Re: Upgrade z 1.5.3 na 1.6.9+

autor David Mudrák -
Obrázek: Moodle HQ Obrázek: Obzvláště nápomocní moodlisté Obrázek: Překladatelé Obrázek: Vývojáři
Zkuste si přes schránku vložit ten problémový dotaz přímo do SQL klienta a spusťte jej tam. MySQL chybový kód 121 se dle všeho týká duplicitních názvů cizích klíčů. Možná vám SQL klient prozradí víc...

--mudrd8mz
V odpovědi na David Mudrák

Re: Upgrade z 1.5.3 na 1.6.9+

autor Miroslav Hrdý -
Jen tak pro zajímavost:

Když pustím SQL příkaz ručně

CREATE TABLE mdl_course_meta
( id BIGINT(10) unsigned NOT NULL auto_increment, parent_course BIGINT(10) unsigned NOT NULL DEFAULT 0, child_course BIGINT(10) unsigned NOT NULL DEFAULT 0, CONSTRAINT PRIMARY KEY (id) )

tak to skončí také s chybou, že nemůže vytvořit tabulku mdl_course_meta.

#1005 - Nemohu vytvořit tabulku 'test.mdl_course_meta' (chybový kód: 121)

Postupoval jsem tak, že jsem zkusil nainstalovat novou instanci Moodle 1.7.7+. Vytvořil jsem si tedy na Apache alias TEST a potom vše udělal tak jako vždy.
Všechny úvodní informační tabulky proběhly 100% korektně a až se začala tvořit databaze TEST tak první chyba byla na výše uvedené tabulce mdl_course_meta.

Pokud ji nazvu jakoli jinak, třeba mdl_course_metb tak SQL projde bez problémů.
Staré Moodle moduly 1.5.3 jedou na tomto stroji po upgrade MySQL a Apache bez problémů.
Tak tedy nevím, kde je zakopaný pes.

MySQL mám 5.1.30
Apache 2.2.11 - na Windows32
PHP mám 5.2.8
V odpovědi na Miroslav Hrdý

Re: Upgrade z 1.5.3 na 1.6.9+

autor Miroslav Hrdý -
Ještě něco, co mi vypisuje log MySQL:

090222 19:23:43  InnoDB: Error: table `moodle`.`adodb_logsql` already exists in InnoDB internal
InnoDB: data dictionary. Have you deleted the .frm file
InnoDB: and not used DROP TABLE? Have you used DROP DATABASE
InnoDB: for InnoDB tables in MySQL version <= 3.23.43?
InnoDB: See the Restrictions section of the InnoDB manual.
InnoDB: You can drop the orphaned table inside InnoDB by
InnoDB: creating an InnoDB table with the same name in another
InnoDB: database and copying the .frm file to the current database.
InnoDB: Then MySQL thinks the table exists, and DROP TABLE will
InnoDB: succeed.
InnoDB: You can look for further help from

Proč mi říká, že tabulka již existuje v jakýmsi InnoDB?
Co to vlastně je?
V odpovědi na Miroslav Hrdý

Re: Upgrade z 1.5.3 na 1.6.9+

autor Lukáš Mižoch -
InnoDB je formát fyzického uložení MySQL dat na disku. Na rozdíl od MyISAM obsahuje podporu transakcí. adodb_logsql by ale měla být standardně uložena v MyISAM úložišti, takže mě překvapuje, že ji máte v InnoDB. Je všem otázka, zda k něčemu je - v mém Moodlu zabírá 0 bajtů. Já bych ji zkusil smazat (pomocí DROP TABLE).
V odpovědi na Miroslav Hrdý

Re: Upgrade z 1.5.3 na 1.6.9+

autor Lukáš Mižoch -

Našel jsem k tomu pár odkazů, ale co z nich chápu, tak to nastává v případě použití cizích klíčů, což mi tady nepřijde jako příčina problému. Zato se mi zdá, že by mohl být poškozený onen .frm soubor.

V odpovědi na Miroslav Hrdý

Re: Upgrade z 1.5.3 na 1.6.9+

autor David Mudrák -
Obrázek: Moodle HQ Obrázek: Obzvláště nápomocní moodlisté Obrázek: Překladatelé Obrázek: Vývojáři
Hm, na první pohled nic podezřelého nevidím. Ale nejsem odborník na MySQL (osobně preferuji PostgreSQL), takže možná někdo zkušenější dovede poradit...
AFAIK InnoDB je jeden z formátů, kterým MySQL fyzicky ukládá data do souborů.
Pokud si dobře pamatuji, na anglické dokumentaci je popsán i způsob, jak si překonvertovat SQL dump do UTF8 ručně (např. pomocí iconv či jiného nástroje), nalít již takto připravenou databázi zpět a obejít tak UTF8 migrační skript Moodlu.
V odpovědi na David Mudrák

Re: Upgrade z 1.5.3 na 1.6.9+

autor Miroslav Hrdý -
Dělá to nejen při upgrade, ale i při založení nového Moodle folderu, tak nevím nevím, jestli nemám příliš nové verze MySQL či Apache....

Každopádně děkuji za info.
V odpovědi na Miroslav Hrdý

Re: Upgrade z 1.5.3 na 1.6.9+

autor Lukáš Mižoch -

Pokud to dělá i u nového, máte zřejmě poškozenou databázi (fyzicky). Tudíž odinstalovat MySQL, smazat všechny případné zbývající adresáře, a znovu ji nainstalovat.

V odpovědi na Lukáš Mižoch

Re: Upgrade z 1.5.3 na 1.6.9+

autor Miroslav Hrdý -
Takže další info:

Zkusil jsem rozjet vše na "čistém" stroji, dodneška jsem používal celý balík EASYPHP 1.8, tzn. celý kompletní balík Apache,PHP,MySQL atd.
Na verzi 1.8 jelo vše OK, abych mohl upgradovat Moodle, potřeboval jsem vyšší PHP,MySQL
Nainstaloval jsem tedy EASYPHP3, nakopíroval do MySQL ručně fyzicky adresáře s databázemi - ve správci byly vidět a vše se na novém engine rozchodilo OK.

Na čistém stroji jsem tké natáhnul EASYPHP 3.0 a ani na čistém stroji nelze Moodle rozchodit - zatvrdne to uplně stejně - viz výše.
Nainstaloval jsem Apache, PHP a MySQL z distribuce Moodle for Windows a ejhle Moodle šel rozjet!!!

Takže v EASYPHP 3.0 je nějaká chyba v MySQL - tzn. vaše podezření bylo správné - DĚKUJI.

Otázka zní jak rozjet MySQL z distribuce Moodle tak, abych zachoval stávající data.

Stačí přeplivnout adresáře
...MySQL/bin
...MySQL/share
a do ...MySQL/data nakopírovat adresáře s databázemi????

Děkuji za rady
V odpovědi na Miroslav Hrdý

Re: Upgrade z 1.5.3 na 1.6.9+

autor Lukáš Mižoch -

To bych neriskoval. Pokud vám ten původní Moodle ještě funguje, tak bych udělal SQL dump do souboru. Pak bych nainstalovat nový Moodle na XAMP (stejnou verzi, jako máte, tzn. 1.5.3), do té naimportoval ten SQL soubor. Dále bych přihrál moodledata a konfigurační soubory. No a nakonec bych provedl ten upgrade přes verti 1.6 na 1.9.

V odpovědi na Miroslav Hrdý

Re: Upgrade z 1.5.3 na 1.6.9+

autor David Mudrák -
Obrázek: Moodle HQ Obrázek: Obzvláště nápomocní moodlisté Obrázek: Překladatelé Obrázek: Vývojáři
Souhlasím s Lukášem. Import přes SQL dump je rozhodně čistší než přímé kopírování adresářů s databází.
Pokud vím, EasyPHP se už aktivně nevyvíjí nebo ano?

--mudrd8mz
V odpovědi na David Mudrák

Re: Upgrade z 1.5.3 na 1.6.9+

autor Miroslav Hrdý -
Udělám to tedy tak, vzpomenete si, kde v configu nastavit vyšší limit pro import dat ze souboru SQL, default je 2048KiB

Jedna databáze má se ZIPem 3,5MiB.

Děkuji

pozn. EASYPHP jsem stáhnul přímo z easyphp.org, soubor byl vyvěšen v roce 2009, ale jestli se bude dál vyvíjet to nevím.