Avatar billede shadowsurfer Nybegynder
28. februar 2003 - 11:10 Der er 5 kommentarer og
1 løsning

errno: 150, hvad er det galt med det her?

#
# Opretter databasen: webshop
#
CREATE DATABASE webshop;
use webshop;


#
#Tabel struktur for: shop_dealer
#
CREATE TABLE shop_dealer (
dealer_id MEDIUMINT (8) NOT NULL auto_increment,
company_name VARCHAR (30) NOT NULL,
contact_person VARCHAR (128) NOT NULL,
address1 VARCHAR (128) NOT NULL,
address2 VARCHAR (128) NOT NULL,
zipcide INT (4) NOT NULL,
town VARCHAR (128) NOT NULL,
phone INT (11) NOT NULL,
cellphone INT (11) NOT NULL,
PRIMARY KEY (dealer_id)
) TYPE=INNODB;

#
#Tabel struktur for: shop_products
#
CREATE TABLE shop_products (
product_id INT (16) NOT NULL auto_increment,
name VARCHAR (15) NOT NULL ,
descript TEXT NOT NULL ,
in_price MEDIUMINT (16) NOT NULL ,
out_price MEDIUMINT (16) NOT NULL ,
cat VARCHAR (10) NOT NULL ,
photo BLOB NOT NULL ,
sale ENUM ('Y','N') NOT NULL  default 'N',
store MEDIUMINT (16) NOT NULL ,
ordermore MEDIUMINT (16) NOT NULL ,
primary_dealer MEDIUMINT (16) NOT NULL,
PRIMARY KEY (product_id) ,
FOREIGN KEY (primary_dealer) REFERENCES shop_dealer(dealer_id)
) TYPE=INNODB;

#
#Tabel struktur for: shop_customer
#
CREATE TABLE shop_customer (
customer_id  INT (16) NOT NULL auto_increment,
f_name VARCHAR (128) NOT NULL,
l_name VARCHAR (128) NOT NULL,
address1 VARCHAR (128) NOT NULL,
address2 VARCHAR (128) NOT NULL,
zipcide INT (4) NOT NULL,
town VARCHAR (128) NOT NULL,
phone INT (11) NOT NULL,
cellphone INT (11) NOT NULL,
PRIMARY KEY (customer_id)
) TYPE=INNODB;


#
#Tabel struktur for: shop_basket
#
CREATE TABLE shop_basket(
basket_id INT NOT NULL auto_increment ,
session_id VARCHAR (32) NOT NULL ,
product_id INT NOT NULL ,
PRIMARY KEY (basket_id) ,
FOREIGN KEY (product_id) REFERENCES shop_products(product_id)
) TYPE=INNODB;


#
#Tabel struktur for: shop_orders
#
CREATE TABLE shop_orders (
order_id INT (12) NOT NULL auto_increment ,
product_id INT (32) NOT NULL ,
customer_id VARCHAR (128) ,
date INT (12) NOT NULL,
PRIMARY KEY (order_id) ,
FOREIGN KEY (product_id) REFERENCES shop_products(product_id)
FOREIGN KEY (customer_id) REFERENCES shop_customer(customer_id)
) TYPE=INNODB;



Når jeg køre denne statement for jeg følgende fejl:
ERROR 1005 at line 27: Can't create table './webshop/shop_products.frm' (errno:
150)

I følge mysql.com change log for 7.5.14.17 MySQL/InnoDB-3.23.50, April 23, 2002
Fixed a bug: in a CREATE TABLE statement the string 'foreign' followed by a non-space character confused the FOREIGN KEY parser and caused table creation to fail with errno 150.

Blev overstående fejl rettet, som er dette tæteste jeg er kommet på af finde fejlen, men denne fejl omhandler string 'foreign' followed by a non-space. Hvilket jeg jo ikke har?!?
Avatar billede erikjacobsen Ekspert
28. februar 2003 - 11:33 #1
Din foreign key i den tabel der går galt har ikke præcis samme type
som den, den refererer til.

Du mangler et komma i din sidste tabel.
Avatar billede shadowsurfer Nybegynder
28. februar 2003 - 15:39 #2
#
# Opretter databasen: webshop
#
CREATE DATABASE webshop;
use webshop;


#
#Tabel struktur for: shop_dealer
#
CREATE TABLE shop_dealer (
dealer_id INT NOT NULL auto_increment,
company_name VARCHAR (30) NOT NULL,
contact_person VARCHAR (128) NOT NULL,
address1 VARCHAR (128) NOT NULL,
address2 VARCHAR (128) NOT NULL,
zipcide INT (4) NOT NULL,
town VARCHAR (128) NOT NULL,
phone INT (11) NOT NULL,
cellphone INT (11) NOT NULL,
PRIMARY KEY (dealer_id)
) TYPE=INNODB;

#
#Tabel struktur for: shop_products
#
CREATE TABLE shop_products (
product_id INT NOT NULL auto_increment,
name VARCHAR (15) NOT NULL ,
descript TEXT NOT NULL ,
in_price MEDIUMINT (16) NOT NULL ,
out_price MEDIUMINT (16) NOT NULL ,
cat VARCHAR (10) NOT NULL ,
photo BLOB NOT NULL ,
sale ENUM ('Y','N') NOT NULL  default 'N',
store MEDIUMINT (16) NOT NULL ,
ordermore MEDIUMINT (16) NOT NULL ,
primary_dealer INT NOT NULL,
PRIMARY KEY (product_id) ,
FOREIGN KEY (primary_dealer) REFERENCES shop_dealer(dealer_id)
) TYPE=INNODB;
#
#Tabel struktur for: shop_customer
#
CREATE TABLE shop_customer (
customer_id  INT NOT NULL auto_increment,
f_name VARCHAR (128) NOT NULL,
l_name VARCHAR (128) NOT NULL,
address1 VARCHAR (128) NOT NULL,
address2 VARCHAR (128) NOT NULL,
zipcide INT (4) NOT NULL,
town VARCHAR (128) NOT NULL,
phone INT (11) NOT NULL,
cellphone INT (11) NOT NULL,
PRIMARY KEY (customer_id)
) TYPE=INNODB;


#
#Tabel struktur for: shop_basket
#
CREATE TABLE shop_basket(
basket_id INT NOT NULL auto_increment ,
session_id VARCHAR (32) NOT NULL ,
product_id INT NOT NULL ,
PRIMARY KEY (basket_id) ,
FOREIGN KEY (product_id) REFERENCES shop_products(product_id)
) TYPE=INNODB;


#
#Tabel struktur for: shop_orders
#
CREATE TABLE shop_orders (
order_id INT (12) NOT NULL auto_increment ,
product_id INT NOT NULL ,
customer_id INT NOT NULL ,
date INT (12) NOT NULL,
PRIMARY KEY (order_id) ,
FOREIGN KEY (product_id) REFERENCES shop_products(product_id) ,
FOREIGN KEY (customer_id) REFERENCES shop_customer(customer_id)
) TYPE=INNODB;


Er rettet lidt, men får stadig samme fejl
Avatar billede shadowsurfer Nybegynder
01. marts 2003 - 16:08 #3
Har afsat flere point, der er nu 60 point at hendte
Avatar billede tefcke Nybegynder
03. marts 2003 - 11:44 #4
Jeg vil lige tage mig den frihed at quote fra mysql manualen ;)
"InnoDB does not auto-create indexes on foreign keys or referenced keys: you have to create them explicitly."


SÅÅÅÅ det har jeg lige gjort for dig!


#
# Opretter databasen: webshop
#
CREATE DATABASE webshop;
use webshop;


#
#Tabel struktur for: shop_dealer
#
CREATE TABLE shop_dealer (
    dealer_id INT NOT NULL auto_increment,
    company_name VARCHAR (30) NOT NULL,
    contact_person VARCHAR (128) NOT NULL,
    address1 VARCHAR (128) NOT NULL,
    address2 VARCHAR (128) NOT NULL,
    zipcide INT (4) NOT NULL,
    town VARCHAR (128) NOT NULL,
    phone INT (11) NOT NULL,
    cellphone INT (11) NOT NULL,
        PRIMARY KEY (dealer_id)
) TYPE=INNODB;

#
#Tabel struktur for: shop_products
#
CREATE TABLE shop_products (
    product_id INT NOT NULL auto_increment,
    name VARCHAR (15) NOT NULL ,
    descript TEXT NOT NULL ,
    in_price MEDIUMINT (16) NOT NULL ,
    out_price MEDIUMINT (16) NOT NULL ,
    cat VARCHAR (10) NOT NULL ,
    photo BLOB NOT NULL ,
    sale ENUM ('Y','N') NOT NULL  default 'N',
    store MEDIUMINT (16) NOT NULL ,
    ordermore MEDIUMINT (16) NOT NULL ,
    primary_dealer INT NOT NULL,
        PRIMARY KEY (product_id) ,
        INDEX dealer_id_idx (primary_dealer),
        FOREIGN KEY (primary_dealer) REFERENCES shop_dealer(dealer_id)
) TYPE=INNODB;
#
#Tabel struktur for: shop_customer
#
CREATE TABLE shop_customer (
    customer_id  INT NOT NULL auto_increment,
    f_name VARCHAR (128) NOT NULL,
    l_name VARCHAR (128) NOT NULL,
    address1 VARCHAR (128) NOT NULL,
    address2 VARCHAR (128) NOT NULL,
    zipcide INT (4) NOT NULL,
    town VARCHAR (128) NOT NULL,
    phone INT (11) NOT NULL,
    cellphone INT (11) NOT NULL,
        PRIMARY KEY (customer_id)
) TYPE=INNODB;


#
#Tabel struktur for: shop_basket
#
CREATE TABLE shop_basket(
    basket_id INT NOT NULL auto_increment ,
    session_id VARCHAR (32) NOT NULL ,
    product_id INT NOT NULL ,
        PRIMARY KEY (basket_id) ,
        INDEX product_id_idx(product_id),
        FOREIGN KEY (product_id) REFERENCES shop_products(product_id)
) TYPE=INNODB;


#
#Tabel struktur for: shop_orders
#
CREATE TABLE shop_orders (
    order_id INT (12) NOT NULL auto_increment ,
    product_id INT NOT NULL ,
    customer_id INT NOT NULL ,
    date INT (12) NOT NULL,
        PRIMARY KEY (order_id) ,
        INDEX product_id_idx(product_id),
        FOREIGN KEY (product_id) REFERENCES shop_products(product_id) ,
        INDEX customer_id_idx(customer_id),
        FOREIGN KEY (customer_id) REFERENCES shop_customer(customer_id)
) TYPE=INNODB;
Avatar billede shadowsurfer Nybegynder
03. marts 2003 - 21:05 #5
Tak, Det virker nu ;-)

Hvis du vil havde point for din kommentar, lav et svar ;-)
Avatar billede tefcke Nybegynder
04. marts 2003 - 00:41 #6
Glad for at jeg kunne hjælpe :)

Har selv haft samme problem da jeg sad med min database opgave!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester