Je dois changer une colonne dans MYSQL en NULL en NOT NULL, mais j'obtiens l'erreur excutar la syntaxe. Je ne souhaite modifier que la dernière colonne, j'ai déjà effectué quelques recherches mais je n'ai pas trouvé la solution, ce qui peut être simple mais je suis nouveau dans la base de données et je ne l'avais pas réalisé jusqu'à présent. quelqu'un peut-il m'aider?
Exemple détenu: changer rapidement la colonne NULL en NOT NULL
ALTER TABLE glpi_ticketsatisfactions ALTER COLUMN comment BIGINT NOT NULL;
Erreur:
[42000] [1064] Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à la version de votre serveur MariaDB pour la bonne syntaxe à utiliser près de 'BIGINT NOT NULL' à la ligne 1
CREATE TABLE
:
CREATE TABLE glpi_ticketsatisfactions
( id int(11) NOT NULL AUTO_INCREMENT,
tickets_id int(11) NOT NULL DEFAULT '0',
type int(11) NOT NULL DEFAULT '1',
ate_begin datetime DEFAULT NULL,
date_answered datetime DEFAULT NULL,
satisfaction int(11) DEFAULT NULL,
comment text COLLATE utf8_unicode_ci,
PRIMARY KEY (id),
UNIQUE KEY tickets_id (tickets_id)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
La syntaxe que vous avez utilisée provient d'un exemple SQL Server , pas de MySQL . Il serait bon de vérifier la documentation MySQL sur ALTER TABLE
syntaxe.
Dans MySQL, le ALTER COLUMN
le sous-paragraphe ne peut être utilisé que pour définir ou supprimer la valeur par défaut de la colonne (SET DEFAULT literal
ou DROP DEFAULT
).
Vous devez utiliser soit CHANGE COLUMN
(notez que le nom de la colonne est doublé car vous pouvez l'utiliser pour changer son nom):
ALTER TABLE MyTable
CHANGE COLUMN comment comment BIGINT NOT NULL;
ou MODIFY COLUMN
:
ALTER TABLE MyTable
MODIFY COLUMN comment BIGINT NOT NULL;
Maintenant, il y a 2 autres problèmes, à côté de la syntaxe:
Voir le CREATE TABLE
, la conversion d'une colonne "commentaire" de TEXT
en BIGINT
n'a pas beaucoup de sens. Je suppose que vous voulez le conserver TEXT
et ne le faire que NOT NULL
.
Il peut y avoir des valeurs NULL
déjà dans la table. Si tel est le cas, l'instruction échouera avec des erreurs. Donc, vous devez d'abord UPDATE
ces valeurs à une valeur non nulle (par exemple la chaîne vide), puis modifier la colonne:
Nos déclarations deviennent donc:
UPDATE glpi_ticketsatisfactions
SET comment = ''
WHERE Comment IS NULL ;
ALTER TABLE glpi_ticketsatisfactions
MODIFY COLUMN comment TEXT COLLATE utf8_unicode_ci NOT NULL ;