Hi Philip,

> > Hmmm..., it doesn't seem to be a problem for me in 4.0.17:
> >
> >   mysql> CREATE TABLE t3
> >       -> (
> >       ->    id CHAR(5) NOT NULL,
> >       ->    description VARCHAR(48) NOT NULL,
> >       ->    PRIMARY KEY (id)
> >       -> ) TYPE = InnoDB;
> >   Query OK, 0 rows affected (0.02 sec)
> >
> >   mysql> DESC t3;
> >   +-------------+-------------+------+-----+---------+-------+
> >   | Field       | Type        | Null | Key | Default | Extra |
> >   +-------------+-------------+------+-----+---------+-------+
> >   | id          | varchar(5)  |      | PRI |         |       |
> >   | description | varchar(48) |      |     |         |       |
> >   +-------------+-------------+------+-----+---------+-------+
> >   2 rows in set (0.01 sec)
> >
> >   mysql> CREATE TABLE t4
> >       -> (
> >       ->   id INT NOT NULL,
> >       ->   t3_id CHAR(5) NOT NULL,
> >       ->   INDEX t3_ind(t3_id)
> >       -> ) TYPE = InnoDB;
> >   Query OK, 0 rows affected (0.02 sec)
> >
> >   mysql> ALTER TABLE t4 ADD CONSTRAINT FOREIGN KEY (t3_id) REFERENCES
> > t3(id);
> >   Query OK, 0 rows affected (0.11 sec)
> >   Records: 0  Duplicates: 0  Warnings: 0
> >
> > I do get the error you quote (ERROR 1005: Can't create table...) if I
> > leave out the index creation in either table, which is documented in
> > the manual
> > <http://www.mysql.com/doc/en/InnoDB_foreign_key_constraints.html>.  I
> > can see that supp.supp_cd is a PRIMARY KEY.  Did you create the
> > required index on hpi_supp_agmt.supp_cd before you tried to add the
> > foreign key reference?
> >
> > Michael
>
> The hpi_supp_agmt.supp_cd is part of a compound primary index. BTW, this
> is a legacy database I am trying to port. Here is the create for the
> hpi_supp_agmt:
>
> create table hpi_supp_agmt
>  (
>    div_cd char(4) not null,
>    hpi_no char(15) not null,
>    supp_cd char(5) not null,
>    agmt_no char(8) not null,
>    agmt_owner char(4) not null,
>    agmt_price decimal(16) not null,
>    agmt_uom char(4) not null,
>    agmt_lt integer not null,
>    agmt_exp_dt date not null,
>    updt_user_id smallint not null,
>    updt_dt date not null,
>    create_dt date not null,
>    constraint p1hpisuppagmt primary key (div_cd,hpi_no,supp_cd,agmt_no)
>  ) type = InnoDB;

What if you create an additional index on the supp_cd column only?

With regards,

Martijn Tonies
Database Workbench - developer tool for InterBase, Firebird, MySQL & MS SQL
Server.
Upscene Productions
http://www.upscene.com


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to