Doplněk dg / MySQL-dump hlásí chybu TypeError strlen() po aktualizaci Nette na nejnovější verzi
- Alsatian
- Člen | 175
Ahoj. Poprosím vás o radu. Používám pro zálohu a obnovu databáze
skvělý doplněk dg / MySQL-dump.
Po aktualizaci nette na nejnovější verzi, dříve 3.0, nyní setinkový
update, mi přestalo fungovat obnovení databáze.
To provádím takto
$db = new \mysqli($this->paramDb['db_host'], $this->paramDb['db_user'], $this->paramDb['db_password'], $this->paramDb['db_name']);
$import = new \MySQLImport($db);
$import->load($sql);
A u $import->load($sql); hlásí chybu TypeError „strlen() expects parameter 1 to be string, boolean given“
Je možné, že na novou verzi Nette není prozatím rozšíření https://github.com/…QLImport.php připraveno?
Případně jaký jiný doplněk používáte vy?
Děkuji.
- Alsatian
- Člen | 175
dakur napsal(a):
@Alsatian Ahoj, zkusil bych xDebugem prokrokovat kód, pravděpodobně to spadne na řádku
$s = fgets($handle)
, protožefgets()
vracífalse
, pokud dojde k nějaké chybě. To$sql
máš opravdu správně?
Ahoj, krokoval jsem a na řádku 77 (soubor src/MySQLImport.php) při čtení posledního řádku sql importního souboru je v $s proměné false, místo text řádku. Umístil jsem další provádění scriptu do podmínky a vše již funguje. Běží mi to na PHP verzi 7.2, tu jsem neměnil, ale asi došlo k nějaké typové kontrole aktualizací Nette.
Díky :)
- David Grudl
- Nette Core | 8218
Mohl bys mi ten sql soubor poslat zazipovaný emailem na david@grudl.com ? Stačí poslední část, se kterou se to takto chová.
- Alsatian
- Člen | 175
@DavidGrudl omlouvám se za dvouleté zpoždění, až nyní jsem narazil na stejnou chybu a tím na svůj příspěvek ve fóru :)
Soubor vytvářím dle Tvého návodu, jen mám „.sql“ příponu u souboru s databází.
$dump->save('nazev-souboru.sql');
Pro obnovení potom
$import->load('nazev-souboru.sql');
SQL soubor potom vypadá takto
DROP TABLE IF EXISTS `visitors_sum`;
CREATE TABLE `visitors_sum` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`day` varchar(15) CHARACTER SET utf8 NOT NULL,
`celkem` int(11) NOT NULL,
`uip` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=386 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ALTER TABLE `visitors_sum` DISABLE KEYS;
INSERT INTO `visitors_sum` (`id`, `day`, `celkem`, `uip`) VALUES
(1, '2020-01-12', 2, 2),
...
...
(385, '2022-08-23', 3, 1);
ALTER TABLE `visitors_sum` ENABLE KEYS;
COMMIT;
-- THE END
Editoval Alsatian (23. 8. 2022 22:09)