Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie bekomme ich mysqli mit DELIMITERs in SQL-Anweisungen zum Laufen?

Dies ist die Quelle, die mir geholfen hat, dies zu verstehen ... end-of-statement-delimiter-tp2124060p2124276.html">http://zend-framework-community.634137.n4.nabble.com/Problems-changing-the-sql-end-of-statement-delimiter-tp2124060p2124276.html

Ich glaube, es ist nur etwas, das einige MySQL-Clients implementiert haben, um dabei zu helfen, eine Reihe von SQL-Anweisungen gleichzeitig zu versenden.

mysqli-Treiber implementiert diese Funktionalität nicht.

Das sollte also funktionieren.

$query = <<<QUERY
DROP VIEW IF EXISTS `myview` ;
SHOW WARNINGS;
DROP TABLE IF EXISTS `myview`;
SHOW WARNINGS;

CREATE OR REPLACE VIEW `myview` AS

...view definition...

;
SHOW WARNINGS;

SET [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
QUERY;

$result = mysqli_multi_query($dbConnection, $query);

Ich bin auf dasselbe Problem gestoßen, mit demselben mysqli-Treiber, mit der multi_query-Funktion (unter Verwendung von Trennzeichen beim Erstellen von Prozeduren) und dem Entfernen des DELIMITER aus meinem SQL hat funktioniert.