2016-05-04 14 views
1

Ich versuche, Charset meiner MySQL-Datenbank mit einem Verfahren zu ändern.mysqlprocedure seltsamer Fehler auf localhost

Ich schrieb es vor ein paar Jahren und ging nicht zurück, bis heute.

Damit habe ich einen seltsamen Fehler:

unter meiner Prozedur:

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] 

und dies ist die Antwort von MySQL-Server

1064 - Sie haben einen Fehler in Ihrem SQL-Syntax; Sie in der Bedienungsanleitung zu Ihrem MySQL-Server-Version entspricht, die für die richtige Syntax

in der Nähe von ‚‘ in Zeile verwenden 3

anykind Hilfe wird viel

+0

Einige besondere Gründe für "utf8_swedish_ci" anstelle der bevorzugten "utf8_unicode_520_ci"? –

+0

Die spezifische Sprache utf8 encoding (z. B. utf8_swedish_ci) enthält zusätzliche Sprachregeln, die sie am genauesten für diese Sprachen sortieren lassen. –

Antwort

2

geschätzt werden Es sieht aus wie MySQL die sieht Semikolon als das Ende der Anweisung.

Stellen Sie sicher, dass Sie das Trennzeichen ändern, bevor Sie die Anweisung CREATE PROCEDURE ausführen.

DELIMITER $$ 

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

DELIMITER ; 
+0

Ich habe jetzt einen neuen Fehler # 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version entspricht, nach der richtigen Syntax für die Verwendung von '/ sql' in Zeile 1. –

+1

Nun zeigt der Fehler nun auf '[/ sql]'. Was ist das Kauderwelsch? Nicht MySQL-Syntax. –

+0

Ich habe keine Ahnung. Vor 4 Jahren hat es funktioniert. Jetzt funktioniert es nicht. –