SQL de création de table de clé primaire et de clé étrangère de la syntaxe
Je suis de la création d'une base de données MySQL pour les devoirs, et dans d'erreur de syntaxe #1005 dans phpmyadmin. Je pense qu'il a quelque chose à voir avec les clés étrangères mais si w3schools a est à droite de mon syntaxe devrait être bon.
Voici les instructions SQL;
create table if not exists customers
(
id int not null auto_increment,
cust_gname varchar(20) not null,
cust_fname varchar(30) not null,
cust_street varchar(30) not null,
cust_suburb varchar(30) not null,
cust_state varchar(6) not null,
cust_postcode varchar(4) not null,
cust_email varchar(50) not null,
cust_phone varchar(12),
cust_mobile varchar(12),
cust_user_id int,
foreign key (cust_user_id) references users(id),
primary key (id)
);
create table if not exists ingredients
(
id int,
name varchar(30) not null,
primary key (id)
);
create table if not exists recipes
(
id int,
name varchar(30) not null,
recipes_menu_id int,
foreign key (recipes_menu_id) references menus(id)
image varchar(30),
primary key (id)
);
create table if not exists ingredients_recipes
(
id int,
ingredients_recipes_ingredient_id int,
foreign key (ingredients_recipes_ingredient_id) references ingredients(id),
ingredients_recipes_recipe_id int,
foreign key (ingredients_recipes_recipe_id) references recipes(id),
primary key (id)
);
create table if not exists menus
(
id int,
description varchar(30) not null,
menus_restaurant_id int,
foreign key (menus_restaurant_id) references restaurants(id),
primary key (id)
);
create table if not exists restaurants
(
id int,
name varchar(30) not null,
address1 varchar(30) not null,
address 2 varchar(30),
suburb varchar(30) not null,
state varchar(10) not null,
postcode varchar(4) not null,
primary key (id)
);
create table if not exists customers_ingredients
(
id int,
customers_ingredients_customer_id int,
foreign key (customers_ingredients_customer_id) references customers(id),
customers_ingredients_ingredient_id int,
foreign key (customers_ingredients_ingredient_id) references ingredients(id),
primary key (id)
);
create table if not exists users
(
id int,
username varchar(40) not null,
password varchar(50) not null,
group_id int,
created DATETIME,
modified DATETIME,
primary key (id)
);
create table if not exists groups
(
id int,
name varchar(10) not null,
created DATETIME,
modified DATETIME,
primary key (id)
);
- le
recipes
table n'est pas bonne, manque un,
... - w3schools n'est pas un bon endroit pour apprendre le SQL. Leur site est plein d'erreurs. Le SGBD manuel est un endroit beaucoup mieux à trouver la syntaxe correcte
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à la création d'une table avec une clé étrangère référence, la table à laquelle il est fait référence doit déjà exister. Vous êtes en train de créer un
customers
table au début du script qui fait référence à lausers
table qui n'est pas créé jusqu'à près de la fin. Il y a d'autres exemples dans le script trop.Vous avez besoin pour créer les tables dans le bon ordre, ou de l'utilisation
set foreign_key_checks = 0;
en haut pour désactiver cette exigence. Assurez-vous que vousset foreign_key_checks = 1
à la fin une fois que tous vos tableaux sont créés.Remarque: il peut y avoir d'autres erreurs de syntaxe dans le script - je n'ai pas vérifié tous.