2014-02-17 5 views
0

У меня есть ошибка: Result consisted of more than one row but i can't find out it.MySql ошибка: Результат состоит из более чем одной строки

Запись id_user имеет только одну запись в своей таблице.

Процедура:

CREATE DEFINER=`root`@`localhost` PROCEDURE `delete_user_deep`(id_user int(11)) 
BEGIN 

declare nome_loc varchar(45); 
declare cognome_loc varchar(45); 

select nome,cognome 
into nome_loc,cognome_loc 
from user 
where id_user=id_user; 

delete from Radius.radcheck where username in (
    select mac_address from machine where id_user =id_user); 

delete from Radius.radreply where username in (
    select mac_address from machine where id_user =id_user); 

delete from machine_ip where id_machine in (
    select id_machine from machine where id_user=id_user); 

delete from machine where id_user = id_user; 

delete from document where id_user=id_user; 

delete from user where id_user=id_user; 

insert into log_generic values(
        NULL, 
        'USER', 
        'Delete User Deep', 
        (select concat ('User: ',id_user,' Name: ',cognome_loc,' Prename: ',nome_loc)), 
        now()); 

END 
+0

Это код MySQL, поэтому я удаляю тэг sql-сервера. –

+0

Check 'select concat ('User:', id_user, 'Name:', cognome_loc, 'Prename:', nome_loc)' –

+1

Если бы я собирался туда, я бы не начал здесь. – Strawberry

ответ

0

Проблема заключается в этом утверждении:

select nome,cognome 
into nome_loc,cognome_loc 
from user 
where id_user=id_user; 

Это возвращает ошибку, если есть более чем одна строка. Ошибка зарегистрирована here.

Это вызвано тем, что имя параметра совпадает с именем столбца. id_user относится к столбцу с обеих сторон сравнения.

запрос должен выглядеть следующим образом:

select nome, cognome 
into nome_loc, cognome_loc 
from user 
where id_user = param_id_user; 

Всегда параметр префикс и имена переменных с чем-то, чтобы отличить их от имен столбцов.

+0

Да, Гордон, я проверил его, и я нашел эту проблему, я заменил id_user как id_user_in, и он работает! Большое спасибо – user3319229

Смежные вопросы