Je suis sous Wamp 5 V. 1.6.3 (MySQL 5.0.21-community-nt; PHP 5.1.4; PhpMyAdmin 2.8.0.3 et Apache/2.0.55 (Win32) sous Wxp.
Je tente d'importer un fichier sql pour créer les tables de ma base Films. L'import se plante lors de l'importation de la première table indiquant des clés étrangères (Film). J'obtiens un numéro d'erreur 1005 lors de la commande CREATE TABLE, et un message d'erreur de numéro 150. Cela signigie bien que la création de la table a échoué à cause de la contrainte de clé étrangère, qui n'a pas été correctement formulée ? Je me suis contenté d'utiliser un fichier sql d'un livre -qui fonctionne chez mon voisin- que voici :
Code :
# # Commandes de création de la base #
# Pour se connecter toujours à la bonne base
USE Films;
DROP TABLE IF EXISTS Film; DROP TABLE IF EXISTS Artiste; DROP TABLE IF EXISTS Notation; DROP TABLE IF EXISTS Internaute; DROP TABLE IF EXISTS Pays; DROP TABLE IF EXISTS Role;
# Création des tables
CREATE TABLE Internaute (email VARCHAR (40) NOT NULL, nom VARCHAR (30) NOT NULL , prenom VARCHAR (30) NOT NULL, motDePasse VARCHAR (32) NOT NULL, anneeNaiss INTEGER, PRIMARY KEY (email));
CREATE TABLE Pays (code VARCHAR(4) NOT NULL, nom VARCHAR (30) DEFAULT 'Inconnu' NOT NULL, langue VARCHAR (30) NOT NULL, PRIMARY KEY (code));
CREATE TABLE Artiste (id INTEGER AUTO_INCREMENT NOT NULL, nom VARCHAR (30) NOT NULL, prenom VARCHAR (30) NOT NULL, anneeNaiss INTEGER, PRIMARY KEY (id), UNIQUE (nom, prenom));
CREATE TABLE Role (titre VARCHAR (50) NOT NULL, idActeur INTEGER NOT NULL, nomRole VARCHAR(30), PRIMARY KEY (titre,idActeur), FOREIGN KEY (titre) REFERENCES Film, FOREIGN KEY (idActeur) REFERENCES Artiste);
# On quitte mysql
exit
------ Je ne peux donc rien faire. Il ne peut s'agir que de ma version de MySQL ou de mon PhpMyAdmin, non ?! Mais comme avec la console MySQL, cette dernière m'affiche une erreur de syntaxe avec : mysql> < Films.sql ou mysql> < Films.sql; ou mysql> Films.sql; ou mysql> Films.sql
Ca fonctionne !!! Pourquoi ? A force de tout essayer, je ne sais plus la raison : - j'ai utilisé UTF8_Unicode_ci pour MySQL et la base - j'ai supprimé la commande exit à la fin du fichier sql
Quant à savoir pourquoi les noms des colonnes n'étaient pas listées dans les FOREIGN KEY (et dans le bouquin et dans le fichier numérique sql... Ca dépasse l'entendement. Merci en tous cas pour l'aide.