Erreur Mysql sur la création de colonnes `TEXT not null default ''`
Dans l’un des tests de SPIP on crée différentes tables pour vérifier des opérations dessus.
En ce moment, avec SPIP installé en mysql, j’obtiens des erreurs, ou il n’arrive pas à créer certains champs. L’erreur indique par exemple
BLOB, TEXT, GEOMETRY or JSON column 'un_texte' can't have a default value
En l’occurrence cela vient de cette déclaration
-
"un_texte" => "TEXT NOT NULL DEFAULT ''"
sur la table, - qui crée une requête CREATE TABLE contenant :
un_texte TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',
Comme dit https://www.percona.com/blog/cant-we-assign-a-default-value-to-the-blob-text-geometry-and-json-data-types/ ce n’est pas si clair.
https://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html semble indiquer qu’à partir mysql 8 on peut utiliser DEFAULT ('')
qui devrait fonctionner…
Cela dit là je suis en 5.7 Server version: 5.7.39 MySQL Community Server (GPL)
Je suis très étonné de rencontrer cette erreur seulement maintenant ? alors qu’on a différentes déclarations de la sorte dans SPIP.
Cette requête échoue chez moi donc
CREATE TABLE IF NOT EXISTS spip_test_tintin (
id_tintin INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
un_texte TEXT NOT NULL DEFAULT ''
)