MySQL重复与CONCAT错误1548 - 无法从mysql.proc加载。该表可能已损坏

时间:2012-03-05 11:46:59

标签: mysql duplicates concat

我有这个查询,将firstname与姓氏连接起来,然后找到重复项:

SELECT import.*, import.CONCAT(nume,' ',prenume) full2 
FROM import 
INNER JOIN (SELECT CONCAT(nume,' ',prenume) full,COUNT(*) 
            FROM import 
            WHERE users_id=1 
            GROUP BY full 
            HAVING COUNT(*)>1) as t2 ON import.full2 = t2.full 
WHERE users_id=1

我认为sql语法是正确的,但我得到错误:1548 - 无法从mysql.proc加载。该表可能已损坏

5.1.59 mysql版本有什么问题吗?

3 个答案:

答案 0 :(得分:0)

那样做

CONCAT(import.nume,' ',import.prenume) full2 

而不是

import.CONCAT(nume,' ',prenume) full2 

更新

试试:

SELECT t1.*, CONCAT(t1.nume,' ',t1.prenume) full2 
FROM import t1
INNER JOIN (SELECT CONCAT(i2.nume,' ',i2.prenume) `full`, COUNT(*) 
        FROM import i2
        WHERE i2.users_id=1 
        GROUP BY `full`
        HAVING COUNT(*)>1) as t2 ON full2 = t2.`full` 
WHERE users_id=1

答案 1 :(得分:0)

更改

SELECT import.*, import.CONCAT(nume,' ',prenume) full2 

SELECT import.*, CONCAT(import.nume,' ',import.prenume) as full2 

请注意CONCAT语句的更改以及使用列别名的as添加

当您使用单个表时,可以从列列表中删除import. ...或者您可以使用表别名

SELECT i.*, CONCAT(i.nume,' ',i.prenume) as full2 
FROM import i
WHERE i.user_id = 1

作为一个例子。

See the MySQL docs here on using the AS alias

答案 2 :(得分:0)

检查所有数据库中的所有表是否与当前版本的MySQL服务器不兼容:

mysql_upgrade -uroot -p

http://dev.mysql.com/doc/refman/5.0/en/mysql-upgrade.html