MySQL Workbench で作成されたストアド プロシージャがいくつかあります。MySQL ワークベンチを使用してテスト DB に配置すると、問題なく動作します。
現在、デプロイ用の DB 作成スクリプトを準備していますが、これだけが問題です。コマンドライン/mysqlシェルを使用すると、スクリプトは完全に機能します。これは、PHP mysql(i) インターフェイスを使用してスクリプトを実行した場合にのみ発生します。失敗します。コメントなし。
MySQL ワークベンチが生成するプロシージャ作成スクリプトを使用します。つまり、次のパターンがあります。
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
スクリプトの開始時に、手順ごとに繰り返します。
DELIMITER $$
USE `dbname`$$
CREATE PROCEDURE `procname`(IN inputparameters)
BEGIN
・・・手順はこちら
;
END$$
DELIMITER ;
このスクリプトは、MySQL Workbench から実行すると正常に機能します。mysqlコマンドラインから同じことを試しても問題なく動作します。しかし、PHP mysqli インターフェイスを介して実行すると、何も達成できません (mysqli_multi_query で実行すると、DB を作成および設定する他のスクリプトで正常に動作します)。インターフェイスで返されるエラーはなく、結果もありません (!)。私が得るのは「false」だけです。それだけです。エラー コードは 0 で、エラー メッセージはありません。
それは私にとって大きなWTFであり、正しい方向に私を向けることができることを願っています-どうすればこれを修正し、PHPから手順をインストールできますか?
PS: root/admin アクセス権が付与され、検証されます (結局のところ、まったく同じ接続で DB を作成し、ユーザーを作成し、テーブルを挿入しただけです)。