[adminer-tracker] [ adminer-Bugs and Features-3027898 ] CREATE+ALTER - nespravne poradi sloupcu
Database management in a single PHP file
Brought to you by:
jakubvrana
From: SourceForge.net <no...@so...> - 2010-07-15 13:17:03
|
Bugs and Features item #3027898, was opened at 2010-07-10 23:48 Message generated for change (Comment added) made by jakubvrana You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=1127745&aid=3027898&group_id=264133 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Adminer Group: 2.3.2 >Status: Closed >Resolution: Wont Fix Priority: 5 Private: No Submitted By: Odin (odinuv) Assigned to: Jakub Vrána (jakubvrana) Summary: CREATE+ALTER - nespravne poradi sloupcu Initial Comment: Zdravim, Pri pouziti vygnerovaneho skriptu pro sjednoceni databaze, ulozene procedury vytvori napr. nasledujici dotaz: ALTER TABLE `mod_calendar_addresses` MODIFY `name` varchar(255) COLLATE utf8_general_ci NOT NULL AFTER `city`, MODIFY `city` varchar(255) COLLATE utf8_general_ci COMMENT 'mesto' AFTER `street`; Skonci s chybou: Chyba v dotazu: Unknown column 'city' in 'mod_calendar_addresses' Ktera je vadna, protoze sloupec mod_calendar_addresses.city existuje. Problem je v tom, ze pri vice MODIFY v jednom ALTER TABLE musi byt sloupce uvedeny v tom poradi ve kterem jsou odkazovany (tj. nemuzu se odkazat na sloupec, ktery potom budu modifikovat). Tedy nasledujici dotaz funguje: ALTER TABLE `mod_calendar_addresses` MODIFY `city` varchar(255) COLLATE utf8_general_ci COMMENT 'mesto' AFTER `street`, MODIFY `name` varchar(255) COLLATE utf8_general_ci NOT NULL AFTER `city`; To o tom poradi sloupcu sice v dokumentaci MySQL neni popsane (alespon jsem to nenasel), ale funguje to tak. Kazdopadne, vzhledem k tomu, ze vice MODIFY v jenom ALTER TABLE je rozsireni mysql, tak jedno z reseni by asi bylo mit pro kazdy MODIFY vlastni ALTER. 5.1.48-community přes PHP extenzi MySQLi Odin. ---------------------------------------------------------------------- >Comment By: Jakub Vrána (jakubvrana) Date: 2010-07-15 15:17 Message: K uvedené situaci nejspíš dojde při změně pořadí sloupců v tabulce. Sloupce by se tedy musely procházet v novém pořadí odzadu, což by bylo příliš komplikované (teď se prochází ve starém pořadí zepředu). Lepší by to bylo vyřešit přímo v MySQL, zkus najít, jestli je na to bug, případně ho založit. ---------------------------------------------------------------------- Comment By: Jakub Vrána (jakubvrana) Date: 2010-07-15 15:03 Message: Více ALTERů by bylo problematických u velkých tabulek, protože každý ALTER znamená její kompletní zkopírování, takže by to zbytečně zdržovalo. ---------------------------------------------------------------------- Comment By: Odin (odinuv) Date: 2010-07-10 23:56 Message: + definice tabulky pro uvedene dotazy CREATE TABLE `mod_calendar_addresses` ( `id` int(4) unsigned NOT NULL AUTO_INCREMENT, `number` varchar(20) DEFAULT NULL, `street` varchar(255) DEFAULT NULL, `city` varchar(255) DEFAULT NULL COMMENT 'mesto', `name` varchar(255) NOT NULL, `caption` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=1127745&aid=3027898&group_id=264133 |