dibi::loadFile problém s delimiter
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Saurian
- Člen | 28
Ahoj, potřeboval bych nahrát sql dump s triggery, kde je použit DELIMITER $$ , vždy však skončím s chybou
DibiDriverException #1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‚DELIMITER $$‘ at line 1
Výpis „critical místa“ sql dumpu je zhruba následující:
DROP TRIGGER IF EXISTS `after_insert_article`;
DELIMITER $$ // (**tady dibi hlásí syntaxy ...**)
CREATE TRIGGER `after_insert_article` AFTER INSERT ON `article`
FOR EACH ROW BEGIN
INSERT INTO `komunikace`.`log` (`id`, `description`) VALUES (NULL, 'insertovano');
END$$
DELIMITER ;
Nepomůže ani „$$“ nahradit např. „|“ , „//“' .
Zkoušel jsem to i přes postupné dotazování dibi::query ..
$sql = file( APP_DIR . '/files/setup.sql' );
$sql_line = '';
foreach ( $sql as $query ) {
if ( chr( 0xd ) . chr( 0xa ) == $query ) {
dibi::query(trim($sql_line));
$sql_line = '';
}
$sql_line .= $query;
}
print "Rebuid databaze completed ...\n";
dibi::dump();
Rovněž skončí na řádku s DELIMITER $$
Jaký by podle Vás měl být správný zápis ?
(pozn. uvedený triger je jen pro příklad, zkoušeno na verzi MySQL 5.5.16 a 5.1.41 )