我遇到了 MySQL v.5.0.091-log 的问题。该数据库由我客户的提供商 (1&1) 提供,因此我无法控制版本,也无法控制他们提供给我们使用的 phpMyAdmin(版本 2.6.4-pl3)。
我的公司大部分时间都使用存储过程和函数来提高效率和安全性。我编写了一个在我们的本地开发数据库上运行良好的存储过程,但是当我尝试将它添加到主机上的测试或生产 MySQL 服务器时,创建语句失败。由于他们提供的 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
创建语句执行,我有我的存储过程。我一遍又一遍地查看它,很可能是我忽略了一些微小的语法错误,但我不知所措。有什么建议么?在此先感谢并感谢任何人可以提供的任何帮助。