Ben MySQL Workbench ile yapılan saklanan prosedürleri bir dizi var. Kullanımı MySQL tezgah benim test DB içine onları koymak için zaman Onlar sadece iyi çalışır.
Şimdi ben dağıtım için DB oluşturma komut dosyaları hazırlıyorum ve bu bana sıkıntı veren tek kişidir. Ben komut satırı / mysql kabuğu kullandığınızda, komut için gayet iyi çalışıyor. Ben komut dosyası çalıştırmak için PHP MySQL (i) arabirimi kullandığınızda sadece - bu başarısız olur. Yorumsuz.
MySQL tezgahı benim için üretir gibi prosedür oluşturma komut dosyalarını kullanın; yani, bu modeli vardır:
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';
yazısının başında, daha sonra her bir işlem için yinelenen:
DELIMITER $$
USE `dbname`$$
CREATE PROCEDURE `procname`(IN inputparameters)
BEGIN
... Prosedürü burada gidiyor
;
END$$
DELIMITER ;
This script works fine if run from MySQL Workbench. It also runs fine if I try the same from mysql commandline. But it fails to accomplish anything when I execute it through the PHP mysqli interface ( executing it with mysqli_multi_query, which works fine for the other scripts creating and populating the DB). There is no error returned on the interface, no results (!). All I get is "false", and that's it. error code is at 0, no error message.
Bu benim için büyük bir WTF, ve ben doğru yönde bana gelin umut - Ben nasıl düzeltebilirim ve PHP prosedürleri yükleyebilirsiniz?
PS: root / admin erişim verildi ve (tüm sonra, ben sadece bu yüzden kullanıcılara, eklenen tablolar ve yaratılmış, aynı bağlantı ile DB oluşturulan) doğrulandı.