Hi,

I hope this is not a well known problem since I just signed up to this list.  But I 
checked the February archive and couldn't find anything on this.

I was trying for a couple of hours now to create a foreign key reference on a varchar 
field:

CREATE TABLE users
(
    login            VARCHAR(20)          NOT NULL,
    password         VARCHAR(20)          NOT NULL,
    email_address    VARCHAR(100)         NOT NULL,
--
    PRIMARY KEY(login),
    INDEX(email_address)
)
TYPE = InnoDB;

create table email_alias
(
    alias            VARCHAR(100)         NOT NULL,
    email_address    VARCHAR(100)         NOT NULL,
--
    PRIMARY KEY(alias),
    INDEX(email_address),
    FOREIGN KEY (email_address) references users(email_address)
)    
TYPE = InnoDB;

Actually my tables were a lot bigger, but I stripped them down to these short tables 
to resolve my problem, which is:

When creating the second table, I get the error message:
ERROR 1005 (HY000): Can't create table './test/email_alias.frm' (errno: 150)

I admit, the first time I didn't put an INDEX on email_address.  I figured that out 
quite fast.  Then I searched again in the Newsgroups and did a SHOW INNODB STATUS.  I 
got the following message:

"Cannot find an index in the referenced table where the referenced columns appear as 
the first columns [...]"

Well - this didn't help at all :(  So I changed my table definitions a hundred times 
to find out what exactly the problem was.  And after hours, I found out:

The VARCHAR must not be longer than 85 characters.  If you replace the "100" in the 
example above by a "85", IT WORKS!!!

So... have I missed the fine print in the documentation or did I actually find a bug?

Here's my configuration:  

- 4.1.1-alpha-standard-log
- Official MySQL-standard binary
- i686
- pc-linux (debian 3.0 woody)

Sven


----------------------------------------
Schlund + Partner AG
Brauerstraße 48
76135 Karlsruhe

Dipl.-Inf. Sven Woltmann           
[EMAIL PROTECTED]  
http://www.schlund.de 


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

Reply via email to