8768 sujets

Développement web côté serveur, CMS

Bonjour

J'alimente ma première base de données et je rencontre des messages d'erreurs lorsque je ne renseigne pas certains champs date.
Le message est le suivant :
Warning: #1265 Data truncated for column 'date_dissolution' at row 1

Je n'ai pas coché NULL dans la structure, ce qui m'autorise à ne pas remplir le champ si je n'ai pas de date à mettre. (si j'ai bien compris!).

J'ai fais des tests, ce message s'affiche systématiquement pour tous les champs date non remplis.

Pouvez-vous me dire pourquoi j'ai ce message?

Je note la date de la façon suivante : 2014-08-12

Merci pour votre aide Smiley biggrin
Salut,

peux tu nous montrer le create table? Je suppose que tu es sur phpmyadmin, tu peux faire export et seulement structure.

Si tu coches NULL en théorie ça veut dire que le champ acceptera une valeur NULL, le create table nous montrera un peu mieux comment ta table est structurée Smiley smile
L'erreur data truncated signifie que les données que tu essaies d'enregistrer occupent plus de place que la largeur de ta colonne.

Il faudrait que tu postes la structure de ta table pour qu'on puisse te répondre.
Bonjour à vous et merci pour vos réponses.

Voici un copié/collé de l'export du fichier de la structure de ma base :



-- phpMyAdmin SQL Dump
-- version 4.1.12
--  http://www.phpmyadmin.net
 
--
-- Client :  localhost:3306
-- Généré le :  Jeu 25 Septembre 2014 à 08:23
-- Version du serveur :  5.5.31-cll
-- Version de PHP :  5.4.16

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données :  `MABASEDEDONNEE`
--

-- --------------------------------------------------------

--
-- Structure de la table `associations`
--

CREATE TABLE IF NOT EXISTS `associations` (
  `id_associations` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `nom` varchar(100) NOT NULL,
  `adresse_siege` varchar(70) NOT NULL,
  `cp_siege` varchar(10) NOT NULL,
  `ville_siege` varchar(70) NOT NULL,
  `site_web` varchar(200) NOT NULL,
  `date_creation` date NOT NULL,
  `date_dissolution` date NOT NULL,
  `numero_enregistrement_sous_prefecture` varchar(50) NOT NULL,
  `date_enregistrement_sous_prefecture` date NOT NULL,
  `scan_declaration_sous_prefecture` varchar(100) NOT NULL COMMENT 'url scan déclaration sous préfecture',
  `scan_statuts` varchar(100) NOT NULL COMMENT 'url scan statuts',
  `date_statuts` date NOT NULL,
  `siren` varchar(20) NOT NULL,
  `siret` varchar(20) NOT NULL,
  `objet` mediumtext NOT NULL,
  `secteur` set('Sport','Culture','Musique','Danse','Fête et traditions','Loisirs','Economie','Social','Educatif') NOT NULL,
  `date_assurance` date NOT NULL,
  `scan_assurance` varchar(100) NOT NULL COMMENT 'url emplacement scan assurance',
  `civilite_president` set('Madame','Monsieur') NOT NULL,
  `nom_president` varchar(70) NOT NULL,
  `prenom_president` varchar(70) NOT NULL,
  `adresse_president` varchar(70) NOT NULL,
  `cp_president` varchar(10) NOT NULL,
  `ville_president` varchar(70) NOT NULL,
  `telephone_president` varchar(20) NOT NULL,
  `portable_president` varchar(20) NOT NULL,
  `fax_president` varchar(20) NOT NULL,
  `email_president` varchar(100) NOT NULL,
  `photo_president` varchar(100) NOT NULL COMMENT 'url photo president',
  `civilite_vice_president` set('Madame','Monsieur') NOT NULL,
  `nom_vice_president` varchar(70) NOT NULL,
  `prenom_vice_president` varchar(70) NOT NULL,
  `adresse_vice_president` varchar(70) NOT NULL,
  `cp_vice_president` varchar(10) NOT NULL,
  `ville_vice_president` varchar(70) NOT NULL,
  `telephone_vice_president` varchar(20) NOT NULL,
  `portable_vice_president` varchar(20) NOT NULL,
  `email_vice_president` varchar(20) NOT NULL,
  `civilite_tresorier` set('Madame','Monsieur') NOT NULL,
  `nom_tresorier` varchar(70) NOT NULL,
  `prenom_tresorier` varchar(70) NOT NULL,
  `adresse_tresorier` varchar(70) NOT NULL,
  `cp_tresorier` varchar(10) NOT NULL,
  `ville_tresorier` varchar(70) NOT NULL,
  `telephone_tresorier` varchar(20) NOT NULL,
  `portable_tresorier` varchar(20) NOT NULL,
  `email_tresorier` varchar(100) NOT NULL,
  `civilite_tresorier_suppleant` set('Madame','Monsieur') NOT NULL,
  `nom_tresorier_suppleant` varchar(70) NOT NULL,
  `prenom_tresorier_suppleant` varchar(70) NOT NULL,
  `adresse_tresorier_suppleant` varchar(70) NOT NULL,
  `cp_tresorier_suppleant` varchar(10) NOT NULL,
  `ville_tresorier_suppleant` varchar(70) NOT NULL,
  `telephone_tresorier_suppleant` varchar(20) NOT NULL,
  `portable_tresorier_suppleant` varchar(20) NOT NULL,
  `email_tresorier_suppleant` varchar(100) NOT NULL,
  `civilite_secretaire` set('Madame','Monsieur') NOT NULL,
  `nom_secretaire` varchar(70) NOT NULL,
  `prenom_secretaire` varchar(70) NOT NULL,
  `adresse_secretaire` varchar(70) NOT NULL,
  `cp_secretaire` varchar(10) NOT NULL,
  `ville_secretaire` varchar(70) NOT NULL,
  `telephone_secretaire` varchar(20) NOT NULL,
  `portable_secretaire` varchar(20) NOT NULL,
  `email_secretaire` varchar(100) NOT NULL,
  `civilite_secretaire_suppleant` set('Madame','Monsieur') NOT NULL,
  `nom_secretaire_suppleant` varchar(70) NOT NULL,
  `prenom_secretaire_suppleant` varchar(70) NOT NULL,
  `adresse_secretaire_suppleant` varchar(70) NOT NULL,
  `cp_secretaire_suppleant` varchar(10) NOT NULL,
  `ville_secretaire_suppleant` varchar(70) NOT NULL,
  `telephone_secretaire_suppleant` varchar(20) NOT NULL,
  `portable_secretaire_suppleant` varchar(20) NOT NULL,
  `email_secretaire_suppleant` varchar(100) NOT NULL,
  PRIMARY KEY (`id_associations`),
  UNIQUE KEY `nom` (`nom`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=34 ;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


Modifié par 6l20 (28 Sep 2014 - 09:22)
Salut,

elle est petite ta table Smiley langue

Tu as l'erreur car tu n'as pas mis de valeur par défaut pour tes dates et surtout que mysql ne semble pas aimer de recevoir une chaîne vide pour un champ de type date, il convertit direct en 0000-00-00 et t'affiches le warning. Tu devrais faire en sorte que tes champs de type date accepte la valeur NULL et mettre NULL par défaut.
C'est vite vu, tous tes champs dates sont not null et n'ont pas de valeur par défaut. Du coup tu as le warning parce que MySQL ne sait pas quoi mettre dans les champs si tu ne lui indiques pas de valeurs; il choisit en dernier recours le 0 binaire parce qu'il ne peut pas faire autrement, qui est évidemment une valeur invalide pour un type date.

Il faut soit enlever les not null, soit prévoir une valeur par défaut (à indiquer à la création de la table avec default XXXXXX).
Modifié par QuentinC (25 Sep 2014 - 20:33)
Bonjour et merci!

Effectivement, en cochant la case NULL, je n'ai plus de message d'erreur.

Par contre, je pensais que le fait de cocher la case NULL obligeait à une saisie, ce n'est pas le cas, j'ai mal compris. Je vais mieux me renseigner.

Merci à vous deux,

Smiley biggrin
a écrit :
Par contre, je pensais que le fait de cocher la case NULL obligeait à une saisie, ce n'est pas le cas, j'ai mal compris. Je vais mieux me renseigner.


Tu as fondamentalement raison, mais il se trouve que c'est exactement le contraire. Quand la case est cochée, alors tu autorises la valeur null.
D'accord..Bien enregistré.

Mais j'ai encore une question NULL !

Pour les champs dates, j'ai coché NULL et maintenant, grâce à vous, plus de message d'erreur quand je ne renseigne pas ces champs.

Mais pour tous les autres champs (tresorier_suppleant, secretaire_suppleant etc..qui sont des VARCHAR) que je ne remplis pas toujours, la cas NULL n'est pas cochée mais je n'ai pas de message d'erreur.