Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/09/2011, 11h53   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2005
Messages : 65
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 65
Points : 13
Points : 13
Par défaut Problème migration HSQL -> MySQL : prob de clés primaires autoincrement commençant à 0

Bonjour

J'ai une base HSQL que je veux passer sous MySQL 5.5.16. J'utilise SQL Workbench/J pour faire une recopie directe car les fichiers SQL de HSQL ne sont syntaxiquement pas compatibles MySQL.

Sauf que sous HSQL, les autoincrement peuvent commencer sans problème à 0, alors que sous MySQL, non
C'est à dire que
Code :
INSERT INTO TABLE(field_int_autoinc) VALUES (0)
, pour mysql, sur une table venant d'être créée, 0 = null, donc il va enregistrer la ligne avec comme ID 1.

En faisant cet INSERT sur une table venant d'être créée, en ayant désactivé l'autoincrement temporairement côté mysql, la ligne prend bien l'id 0, mais si je les réactive ensuite, la ligne d'id 0 se transforme en id 1, donc il y aura des clés dupliquées

Citation:
ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1' for key 'PRIMARY' [SQL State=23000, DB Errorcode=1062]
Bien évidemment, des clés primaires autoincrement servent aussi de clé étrangère à d'autres tables.

On peut forcer les clés primaires à pouvoir valoir 0 sous MySQL avec l'option NO_AUTO_VALUE_ON_ZERO, mais je n'ai pas accès l'administration du serveur.

Comment puis-je donc faire pour réussir cette migration ?
Je vous remercie d'avance
azerty25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 00h26   #2
Candidat au titre de Membre du Club
 
Inscription : octobre 2005
Messages : 65
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 65
Points : 13
Points : 13
J'ai réussi en créant les tables sans les auto_increment, en copiant les données, et en les réactivant ensuite en executant bien au préalable la commande

Code :
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
On peut en effet mettre ce paramètre sans le passer au service mysql à son démarrage. Elle évite à mysql de déplacer les ID 0 en 1.
azerty25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h50.


 
 
 
 
Partenaires

Hébergement Web