J'essaye d'écrire un script qui créera des tables plus petites à partir d'une grande table parente. (Je n'ai pas le choix dans ce cas.) Cependant, ça fait longtemps que je n'ai pas eu de travail SQL sérieux et je suis perplexe devant ce qui est probablement quelque chose de stupide ... Cela ne passera pas le premier couple des lignes sans exploser.Erreur MySql assignant des variables
DELIMITER $$
BEGIN
SET @I = 1;
SET @CountCol = 'Item Number';
SET @StartPos = 0;
SET @EndPos = 24999;
SET @TotalCount = (SELECT Count(@CountCol) FROM `All_Info`);
SET @HowMany = CEILING(@TotalCount/25000) + 1;
WHILE @I < @HowMany DO
SET @query = CONCAT('CREATE TABLE All_Info_',@I,' AS (SELECT @n := @n + 1 `id`, * FROM All_Info LIMIT ',@StartPos,',',@EndPos,'),PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;)');
PREPARE stmt from @query;
EXECUTE stmt;
SET @I = @I + 1;
SET @StartPos = @EndPos;
SET @EndPos = @EndPos + 25000;
END WHILE;
END$$
L'erreur que je reçois est:
[Erreur dans la requête 1] Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser à proximité « SET @I = 1 » à la ligne 2
Je me sens comme si je prends des pilules folles. Des idées de ce que je fais mal?
(Remarque: L'utilisation Sequel Pro comme mon client, dans le cas qui est en quelque sorte pertinent)
Pensez-vous qu'il s'agit d'un problème potentiel? – JoshKopen
Pas aussi loin que je peux dire, même si c'est là que l'erreur s'arrête. Je ne peux pas comprendre cela. – tobybot