2016-05-04 2 views
1

Я пытаюсь изменить charset моей базы данных mysql, используя процедуру.mysqlprocedure странная ошибка на localhost

Я написал это несколько лет назад и не вернулся к нему до сегодняшнего дня.

Под этим я имею странную ошибку:

ниже моя процедура:

Create procedure changecharset() 
Begin 
Declare tname varchar(255); 
Declare done int default 0; 
Declare tc Cursor For 
Select TABLE_NAME From information_schema.TABLES Where TABLE_SCHEMA = schema(); 
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; 

Open tc; 
myloop: loop 
Fetch tc into tname; 
If done = 1 Then 
Leave myloop; 
End if ; 
Set @query = Concat('Alter Table `', tname, '` convert to character set utf8 collate utf8_swedish_ci;'); 
PREPARE alterstmt FROM @query; 
execute alterstmt ; 
Deallocate prepare alterstmt; 
End loop; 

close tc; 
End // 

Delimiter ; 
[/sql] 

и это ответ сервера MySQL

1064 - У Вас есть ошибка в вашем Синтаксис SQL; проверьте руководство, которое соответствует версии сервера MySQL для корректного синтаксиса использовать

около «» в строке 3

Anykind помощь будет оценена

+0

Определенная причина для 'utf8_swedish_ci' вместо предпочтительного' utf8_unicode_520_ci'? –

+0

Кодирование utf8 конкретного языка (например, utf8_swedish_ci) содержит дополнительные языковые правила, которые делают их наиболее точными для сортировки для этих языков. –

ответ

2

Похоже, MySQL видит точка с запятой в качестве конца инструкции.

Перед выполнением инструкции CREATE PROCEDURE убедитесь, что вы изменили разделитель.

DELIMITER $$ 

CREATE PROCEDURE foo() 
BEGIN 
    DECLARE ... ; 
    SET ... ; 
END $$ 

DELIMITER ; 
+0

У меня появилась новая ошибка # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '[/ sql]' в строке 1 –

+1

Ну, ошибка теперь указывает на '[/ sql]'. Что это за тарабарщина? Не синтаксис MySQL. –

+0

Я понятия не имею. 4 года назад это сработало. Теперь это не сработает. –

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