Přihlásit se

Joomla 6.0

Dne 14. října 2025 bylo oficiálně vydáno Joomla 6.0 (kódové jméno Kuimarisha) společně s Joomla 5.4 (Kutegemea). Joomla 5.1 přinesla zabezpečené TUF aktualizace, ale s Joomla 5.4 / 6.0 přichází automatické aktualizace jádra, které budou probíhat bezpečně a bez nutnosti manuálního zásahu.

Phoca Cart - chyba při aktualizaci na verzi 3.5.5

11. úno 2021 20:15 - 11. úno 2021 20:23 #143703
Zdravím,
aktualizace komponenty Phoca Cart z verze 3.5.2 na 3.5.5 končí chybou, můžu poprosit o radu?
Díky moc.

Varování
JInstaller: :Instalace: Chyba SQL Duplicate column name 'queue_number'
Rozšíření Aktualizace: SQL chyba zpracování dotazu: DB funkce selhala, číslo chyby 1060
Duplicate column name 'queue_number'
SQL =
ALTER TABLE `#__phocacart_orders` ADD COLUMN `queue_number` varchar(64) NOT NULL DEFAULT '';
Balíček Aktualizace: Došlo k chybě při instalaci rozšíření: com_phocacart_v3.5.5.zip

Přílohy:

11. úno 2021 20:59 #143705
Odpověď od H13
Admin
Ahoj,

tohle je bohužel chyba, která se nedá ošetřit díky chybějícím instrukcím v MySQL (MariaDB to umí)

Při upgradu došlo k tomu, že to chtělo vložit sloupec do databáze, který tam už byl. Z jakého důvodu tam už byl, těžko říct.

Tady pomůže jen postupné mazání instrukcí pro upgrade a zkoušení upgradu:

- tedy otevřít instalační ZIP balíček a vymazat tuto instrukci z update SQL dotazu
instalační balíček ZIP (pouze komponenty): admin/update/update/sql/mysql/3.5.3.sql
Code:
ALTER TABLE `#__phocacart_orders` ADD COLUMN `queue_number` varchar(64) NOT NULL DEFAULT '';

Ale zda smazat jen instrukci pro tento sloupec nebo pro ostatní, těžko říc - zkusil bych podle toho souboru zjistit, zda ty tabulky už v databázi jsou nebo ne, pokud ano, pak všechny smazat

Po smazání balíček znovu zabalit a zkusit nainstalovat. A pokud tam bude další sloupec, co už v databázi je, tak opět to stejné pro daný sloupec :-( :-(


více zde:
www.phoca.cz/blog/1100-solution-to-a-pro...-updating-components

Bohužel, tak funguje instalační program Joomly a MySQL, které nemá tuto základní instrukci :-(

Phoca Cart - www.phoca.cz/phocacart - e-shop, e-commerce
Phoca Gallery - www.phoca.cz/phocagallery - obrázková galerie
Phoca Download - www.phoca.cz/phocadownload - stahování souborů
Phoca Guestbook - www.phoca.cz/phocaguestbook - guestbook
Poděkovali: polato

11. úno 2021 21:26 #143706
Odpověď od Rudolf
Joomla Expert

Bohužel, tak funguje instalační program Joomly a MySQL, které nemá tuto základní instrukci


Proto mi vždy v easysoftware programátoři kladli na srdce, že je třeba nevyužívat automatické funkce a udělat si vlastní script php do aplikace, který bude načítat přírůstkové DB po zjištění stavu jaká verze je nainstalovaná (na to pak existuje složka v instalaci s přírůstkovými DB).

Nebo jsem to popletl a mluvím o něčem úplně jiném :)

MiniJoomla! - www.minijoomla.cz - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla

12. úno 2021 00:27 #143707
Odpověď od polato
Začátečník
Díky za radu, provedl jsem tyto úpravy a instalace se podařila. :)

-- ALTER TABLE `#__phocacart_orders` ADD COLUMN `queue_number` varchar(64) NOT NULL DEFAULT '';
-- ALTER TABLE `#__phocacart_orders` ADD COLUMN `queue_number_id` int(11) NOT NULL DEFAULT '0';

-- ALTER TABLE `#__phocacart_product_stock` ADD COLUMN `sku` varchar(255) NOT NULL DEFAULT '';
-- ALTER TABLE `#__phocacart_product_stock` ADD COLUMN `ean` varchar(15) NOT NULL DEFAULT '';

12. úno 2021 02:04 #143708
Odpověď od Cony
Moderátor
OT: V rámci instalátoru to lze řešit pomocí FOF frameworku od Akeeby (je součástí Joomly). Aktualizace se tam nepíší do sql souborů ale do XML, s různými doplňujícími podmínkami...

12. úno 2021 08:43 #143709
Odpověď od Rudolf
Joomla Expert

V rámci instalátoru to lze řešit pomocí FOF frameworku od Akeeby (je součástí Joomly). Aktualizace se tam nepíší do sql souborů ale do XML, s různými doplňujícími podmínkami...


To ale asi neplatí u aplikací ,které se prvotně napsaly pro J25, kde asi fof akeeba nebyl, a nyní jsou jen upgradovány na j3, že ne?

MiniJoomla! - www.minijoomla.cz - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla

12. úno 2021 13:22 #143710
Odpověď od Cony
Moderátor
To neplatí u aplikací, které fof nepoužívají. fof je framework, který v Joomle je asi opravdu až od J3 (v J4 už nativně zas nebude), nicméně lze jej použít pro vývoj komponenty od začátku a přibalit jej do instalátoru (pak bude funkční i na J2.5). Má některé poměrně šikovné funkce, někde je pro mně trochu krkolomný, ale zrovna ten instalátor tam je zajímavý.

13. úno 2021 20:54 - 13. úno 2021 20:55 #143711
Odpověď od H13
Admin

Proto mi vždy v easysoftware programátoři kladli na srdce, že je třeba nevyužívat automatické funkce a udělat si vlastní script php do aplikace, který bude načítat přírůstkové DB po zjištění stavu jaká verze je nainstalovaná (na to pak existuje složka v instalaci s přírůstkovými DB).


Původně měly všechny Phoca rozšíření vlastní metody, tedy se to tam kontrolovalo a k takovýmto chybám nedocházelo. Ale po enormním tlaku typu: "Proč rozšíření nepoužívá standardní Joomla instalační vlastnost?", atd. se to změnilo.

Ale tady bych nevinil ani tak Joomlu jako spíš jen a pouze MySQL. Kvůli této chybějící jednodoché instrukci "IF NOT EXIST" v MySQL se píší zbytečně přeplácané řešení a vůbec tomu tak nemusí být. No a kvůli tomu, že je v Joomle pouze jeden driver jak pro MySQL tak pro MariaDB, to pak "odnášejí" i uživatelé MariaDB. A zase nutno podotkonout, že s tím Joomla asi nic neudělá, protože psát driver zvlášť pro MariDB a MySQL asi nemá smysl, když jsou, co se týče chování, z 99% stejný.

Pokud se člověk podívá např. na stack overflow a témata jako je "mysql - add column if not exist", tak uvidí vysoký počet požadavků na řešení tohoto problému a zároveň různé krkolomné řešení za pomocí stávajících metod. Pro vývojáře MySQL snad neexistuje přímočařejší feedback pro to, jakou vlastnost by měly implementovat.

Phoca Cart - www.phoca.cz/phocacart - e-shop, e-commerce
Phoca Gallery - www.phoca.cz/phocagallery - obrázková galerie
Phoca Download - www.phoca.cz/phocadownload - stahování souborů
Phoca Guestbook - www.phoca.cz/phocaguestbook - guestbook

13. úno 2021 21:56 #143712
Odpověď od Cony
Moderátor
No ono to IF NOT EXISTS není součástí SQL standardu, např. Firebird to také nemá. Ten ale umí EXECUTE BLOCK, taková "uložená procedura", bez toho aby se ukládala do databáze, tak lze jedním dotazem zjistit existenci sloupce a druhým případně upravit / vytvořit. MySQL toto bohužel také neumí.

Na druhou stranu, mělo by se jednat v podstatě o extrémní situaci, zřejmě když někdo nainstaluje nějakou beta verzi nebo nějak zasáhne do databáze, takže je asi v zásadě zbytečné to jakkoliv řešit :)

Powered by Fórum