MySQL v.5.0.091-log で問題が発生しました。このデータベースはクライアントのプロバイダー (1&1) に格納されているため、バージョンを制御することも、使用のために提供されている phpMyAdmin (バージョン 2.6.4-pl3) を制御することもできません。
私の会社では、効率とセキュリティのために、ほとんどの場合、ストアド プロシージャと関数を使用しています。ローカルの開発データベースで問題なく動作する sproc を作成しましたが、それをホストのテストまたは本番 MySQL サーバーに追加しようとすると、create ステートメントが失敗します。彼らが提供する phpMyAdmin のバージョンはストアド プロシージャで動作しないため、それらを維持できるようにする独自のインターフェイスがあります。これはテスト済みであり、問題の原因ではありません。
手順は次のとおりです。
CREATE DEFINER=`root`@`localhost` PROCEDURE `objectGetOpenObjectsInfo`()
BEGIN
SELECT bldgobjects.objectId, CONCAT(objectrentinfo.shortDesc,'<br/>',bldginfo.address, ', ',bldginfo.city) AS objTitle,
CONCAT(imagelist.fileDirectory, imagelist.fileName) AS objImg
FROM objectrentinfo INNER JOIN
bldgobjects ON objectrentinfo.objectId = bldgobjects.objectId INNER JOIN
bldginfo ON bldgobjects.bldgId = bldginfo.bldgId INNER JOIN
bldgimages ON bldgobjects.bldgId = bldgimages.bldgId INNER JOIN
imagelist ON bldgimages.imageId = imagelist.imageId
WHERE (objectrentinfo.isOpen = 1) AND (imagelist.imgType = 1)
ORDER BY bldginfo.address;
END
問題は、具体的には CONCAT ステートメントです。それらがプロシージャ内にある限り、create ステートメントは実行されません。すぐに次のように変更します。
SELECT bldgobjects.objectId, objectrentinfo.shortDesc, bldginfo.address, bldginfo.city,
imagelist.fileDirectory, imagelist.fileName
create ステートメントが実行され、sproc が作成されます。私はそれを何度も見てきましたが、おそらく見落としていた小さな構文エラーですが、途方に暮れています。助言がありますか?事前に感謝し、誰でも提供できる助けに感謝します。