2012-05-15 30 views
0

我遇到了MySQL v.5.0.091-log的问题。这个数据库由我的客户提供商提供(1 & 1),所以我无法控制版本,也没有通过他们提供给我们使用的phpMyAdmin(版本2.6.4-pl3)。MySQL过程使用CONCAT时创建失败

我的公司大多数时间都在使用存储过程和函数来提高效率和安全性。我写了一个可以在我们的本地开发数据库上正常工作的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语句执行并且我有我的存档。我一遍又一遍地看了一遍,很可能是它忽略了一些微小的语法错误,但我不知所措。有什么建议么?提前致谢,并感谢任何人都可以提供的帮助。

回答

0

这可能是一个问题分隔符在phpMyAdmin,尝试另一种MySQL客户端是否有可能或尝试这个代码,没有BEGIN-END条款 -

CREATE DEFINER = `root`@`localhost` PROCEDURE `objectGetOpenObjectsInfo`() 
    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; 
+0

感谢您的快速回复。我厌倦了上述情况,但不幸的是仍然是同样的问题我得到的唯一的错误信息是世界上一个通用的地方,它说检查文档。在我自己的机器上,这与接口一起工作,所以我认为它可能与MySQL版本有关? – anjiTechGuy