我试图使用一个程序来更改我的mysql数据库的字符集。
几年前我写过这篇文章并且直到今天都没有回复它。由此我犯了一个奇怪的错误:
以下是我的程序:
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服务器版本对应的手册,以获得正确的语法
near''在第3行
非常感谢Anykind的帮助
答案 0 :(得分:2)
看起来MySQL正在将分号视为声明的结尾。
确保在运行CREATE PROCEDURE语句之前更改分隔符。
DELIMITER $$
CREATE PROCEDURE foo()
BEGIN
DECLARE ... ;
SET ... ;
END $$
DELIMITER ;