Diskuse

Téma: Problém migrace na 8.0.1

Ahoj, tak zkouším migraci na novou verzi. PHP 7.4, MySQL nějaká 8.0.X. Po náhrání souborů práva změněny na 755, nicméně dostávám chybu:

Chyba
mysqli_sql_exception: Table 'sdh-cesov_cz.sunlight-articles' doesn't exist in /mnt/web-data1/sdh-cesov_cz/public_html/www/system/class/Database/Database.php:103
Stack trace:
#0 /mnt/web-data1/sdh-cesov_cz/public_html/www/system/class/Database/Database.php(103): mysqli->query()
#1 /mnt/web-data1/sdh-cesov_cz/public_html/www/system/class/Database/DatabaseLoader.php(30): Sunlight\Database\Database::query()
#2 /mnt/web-data1/sdh-cesov_cz/public_html/www/system/class/Database/SqlReader.php(98): Sunlight\Database\DatabaseLoader::Sunlight\Database\{closure}()
#3 /mnt/web-data1/sdh-cesov_cz/public_html/www/system/class/Database/SqlReader.php(186): Sunlight\Database\SqlReader->Sunlight\Database\{closure}()
#4 /mnt/web-data1/sdh-cesov_cz/public_html/www/system/class/Database/DatabaseLoader.php(34): Sunlight\Database\SqlReader->read()
#5 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/class/PatchInstaller.php(108): Sunlight\Database\DatabaseLoader::load()
#6 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/class/MigrationRunner.php(39): Sunlight\Migrator\PatchInstaller->loadSqlDump()
#7 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/class/PatchInstaller.php(33): Sunlight\Migrator\MigrationRunner->doInstall()
#8 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/index.php(703): Sunlight\Migrator\PatchInstaller->install()
#9 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/index.php(443): Sunlight\Migrator\MigrationDatabaseStep->doSubmit()
#10 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/index.php(267): Sunlight\Migrator\Step->handleSubmit()
#11 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/index.php(870): Sunlight\Migrator\StepRunner->run()
#12 {main}

Next Sunlight\Database\DatabaseException: Table 'sdh-cesov_cz.sunlight-articles' doesn't exist

SQL: RENAME TABLE `sunlight-articles` TO `sdh_article` in /mnt/web-data1/sdh-cesov_cz/public_html/www/system/class/Database/Database.php:109
Stack trace:
#0 /mnt/web-data1/sdh-cesov_cz/public_html/www/system/class/Database/DatabaseLoader.php(30): Sunlight\Database\Database::query()
#1 /mnt/web-data1/sdh-cesov_cz/public_html/www/system/class/Database/SqlReader.php(98): Sunlight\Database\DatabaseLoader::Sunlight\Database\{closure}()
#2 /mnt/web-data1/sdh-cesov_cz/public_html/www/system/class/Database/SqlReader.php(186): Sunlight\Database\SqlReader->Sunlight\Database\{closure}()
#3 /mnt/web-data1/sdh-cesov_cz/public_html/www/system/class/Database/DatabaseLoader.php(34): Sunlight\Database\SqlReader->read()
#4 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/class/PatchInstaller.php(108): Sunlight\Database\DatabaseLoader::load()
#5 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/class/MigrationRunner.php(39): Sunlight\Migrator\PatchInstaller->loadSqlDump()
#6 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/class/PatchInstaller.php(33): Sunlight\Migrator\MigrationRunner->doInstall()
#7 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/index.php(703): Sunlight\Migrator\PatchInstaller->install()
#8 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/index.php(443): Sunlight\Migrator\MigrationDatabaseStep->doSubmit()
#9 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/index.php(267): Sunlight\Migrator\Step->handleSubmit()
#10 /mnt/web-data1/sdh-cesov_cz/public_html/www/migration/index.php(870): Sunlight\Migrator\StepRunner->run()
#11 {main}
postZaslat odpověď
... jakoby ten migrator ignoroval ten prefix, kterej máme sdh a vyplnil jsem ho i do formulare pred zahajenim migrace...
Vím kde je problém. Systémová třída DatabaseLoader, která přejmenovává ty prefixy nepočítá s pomlčkou, což jsem si nevšiml. A protože to tedy nevyhovuje hledanému vzoru, tak to přeskočí.
Aha a co s tím může obyčejný smrtelník jako já dělat? PS: a s čísly to počítá?
Ne s čísly to opravdu nepočítá. 😆 Rozsah je od a do z a podtržítko _.

Jedna varianta je přejmenuj si manuálně ty prefixy v databázi před zahájení migrace z sdh na sunlight.

Nebo druhá varianta, musel být upravit ten vzor v té systémové třídě z ([a-zA-Z_]+)na ([a-zA-Z_\-]+)Ale bez toho abych to zkusil je to rada trochu naslepo.
přepsání v tom loaderu nepomohlo. Je to v tom .../system/class/DatabaseLoader.php ?
Ano /system/class/Database/DatabaseLoader.php, ale jak jsem říkal byla to rada naslepo...

Zkusím to opravit až dorazím domů.
v tom souboru xxxxxxxxxx_initial_change.sql v migration/patches je natvrdo danej prefix... :

RENAME TABLE `sunlight-articles` TO `sunlight_article`;
RENAME TABLE `sunlight-boxes` TO `sunlight_box`;
RENAME TABLE `sunlight-groups` TO `sunlight_user_group`;
RENAME TABLE `sunlight-images` TO `sunlight_gallery_image`;
RENAME TABLE `sunlight-iplog` TO `sunlight_iplog`;
RENAME TABLE `sunlight-pm` TO `sunlight_pm`;
RENAME TABLE `sunlight-polls` TO `sunlight_poll`;
RENAME TABLE `sunlight-posts` TO `sunlight_post`;
RENAME TABLE `sunlight-redir` TO `sunlight_redirect`;
RENAME TABLE `sunlight-root` TO `sunlight_page`;
RENAME TABLE `sunlight-sboxes` TO `sunlight_shoutbox`;
RENAME TABLE `sunlight-settings` TO `sunlight_setting`;
RENAME TABLE `sunlight-user-activation` TO `sunlight_user_activation`;
RENAME TABLE `sunlight-users` TO `sunlight_user`;
Ano, to je v pořádku. Mělo by je to nahrazovat, ale z nějakého důvodu je přeskakuje. Dej mi tak hodinku, až budu doma u PC vyřeším to.
Já to nechám bejt, věřím, že bude nějaká oprava. Pak se klidně hlásím k testování. Vrátím to ze záloh na 7.5.5
Tak je to malinko složitější, než jsem si myslel.
Edit
Vytvořil jsem opravenou verzi, prosím zkus a pokud bude vše v pořádku aktualizujeme migrator ke stažení.
https://sunlight-cms.cz/upload/home/jdanek/migrator-beta.zip
Strana: 1 2 další »