MySQL дублируется с ошибкой CONCAT 1548 - Невозможно загрузить из mysql.proc. Таблица, вероятно, повреждена - PullRequest
0 голосов
/ 05 марта 2012

У меня есть этот запрос, который объединяет имя с фамилией, а затем находит дубликаты:

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 голосов
/ 05 марта 2012

Изменение

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

в качестве примера.

См. Документацию MySQL по использованию псевдонима AS

0 голосов
/ 26 февраля 2015

Проверяет все таблицы во всех базах данных на несовместимость с текущей версией MySQL Server:

mysql_upgrade -uroot -p

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

0 голосов
/ 05 марта 2012

Сделайте это

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
...