Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 本地主机上的mysqlprocedure错误_Php_Mysql_Stored Procedures_Character Encoding - Fatal编程技术网

Php 本地主机上的mysqlprocedure错误

Php 本地主机上的mysqlprocedure错误,php,mysql,stored-procedures,character-encoding,Php,Mysql,Stored Procedures,Character Encoding,我正在尝试使用一个过程更改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 =

我正在尝试使用一个过程更改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服务器版本对应的手册,以了解要使用的正确语法 在第3行的“”附近


任何帮助都将不胜感激

看起来MySQL将分号视为语句的结尾

DELIMITER $$

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

DELIMITER ;
确保在运行CREATE PROCEDURE语句之前更改分隔符

DELIMITER $$

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

DELIMITER ;

我现在有一个新的错误#1064-您的SQL语法有一个错误;检查与MySQL服务器版本对应的手册,以了解第1行“[/sql]”附近使用的正确语法。错误现在指向
[/sql]
。那是什么胡言乱语?不是MySQL语法,我不知道。4年前它成功了。现在它不起作用了。
utf8\u瑞典语\u ci
而不是首选的
utf8\u unicode\u 520\u ci
?特定语言utf8编码(如utf8\u瑞典语\u ci)包含额外的语言规则,使它们能够最准确地对这些语言进行排序。