ALTER TABLE mal foutu ou c moi ?... [mySQL] - SQL/NoSQL - Programmation
Marsh Posté le 11-09-2002 à 13:10:30
Poulou a écrit a écrit : ALTER TABLE test MODIFY COLUMN id tinyint(3) unsigned NOT NULL default NULL auto_increment PRIMARY KEY; |
Déjà là il y a contradiction. 'DEFAULT NULL' à virer.
Pour le problème de clé primaire si c'est pour changer il faut d'abord éjecter la précédente:
ALTER TABLE test DROP PRIMARY KEY; |
Marsh Posté le 11-09-2002 à 14:29:54
Effectivement, j'avais pas fait gaffe au "NOT NULL default NULL"... Va falloir que je modifie le prog pour ça !
Pour la clé primaire, c'es quand même étrange qu'il nous dise qu'il y a une double clé primaire alors qu'on ne la touche pas au final vu que c sur le même champ.
J'ai testé le ALTER TABLE test DROP PRIMARY KEY et j'ai droit à l'erreur :
ERROR 1075: Incorrect table definition; There can only be one auto column and it must be defined as key |
Donc pas possible d'enlever la clé primaire et pas possible de modifier le champ en indiquant PRIMARY KEY. Pas très bien foutu tout ça !...
Marsh Posté le 10-09-2002 à 17:10:13
Bonjour,
Prenons une table toute simple "test" :
+---------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+----------------+
| id | int(10) | | PRI | NULL | auto_increment |
| texte | varchar(255) | YES | | NULL | |
+---------+---------------+------+-----+---------+----------------+
Mettons que je souhaite modifier mon champ en un tinyint, je lance donc la commande :
ALTER TABLE test MODIFY COLUMN id tinyint(3) unsigned NOT NULL default NULL auto_increment PRIMARY KEY;
et là j'obtiens la magnifique erreur :
ERROR 1068: Multiple primary key defined
Evidemment si j'enlève le PRIMARY KEY, il ne se met pas à brailler... Le pb c'est que c'est un programme automatique qui lance les ALTER TABLE donc ça m'arrangerai de garder le PRIMARY KEY.
Ceci a été testé sur un MySQL 4.0.2 ainsi que 3.23.51. C'est donc une limite du ALTER ? c moi qui m'y prend mal ? c'est MySQL qui fait n'importe quoi, etc... ? Je sais qu'il y a certains utilisateurs émérites de MySQL ici (joce...) donc si je pouvais avoir une réponse ! Merci !