天天看点

错误代码: 1005 Can't create table 'hibernate.bill' (errno: 150)

主要问题以及解决办法是:

1,MySQL支持外键约束,并提供与其它DB相同的功能,但表(外键表和外键主表)类型必须为 InnoDB,外键表和外键主表的类型都要是innoDB

建表约束语句:

user表:

1

2

3

4

5

6

<code>CREATE</code> <code>TABLE</code> <code>`usert` (</code>

<code>  </code><code>`id` </code><code>int</code><code>(11) </code><code>NOT</code> <code>NULL</code> <code>AUTO_INCREMENT,</code>

<code>  </code><code>`</code><code>password</code><code>` </code><code>varchar</code><code>(255) </code><code>COLLATE</code> <code>utf8_unicode_ci </code><code>DEFAULT</code> <code>NULL</code><code>,</code>

<code>  </code><code>`userName` </code><code>varchar</code><code>(255) </code><code>COLLATE</code> <code>utf8_unicode_ci </code><code>DEFAULT</code> <code>NULL</code><code>,</code>

<code>  </code><code>PRIMARY</code> <code>KEY</code> <code>(`id`)</code>

<code>) ENGINE=InnoDB</code>

bill新表中有一个外键约束   tb_bill_fk指向 user表中的id :

<code>CREATE</code> <code>TABLE</code> <code>bill (</code>

<code>  </code><code>id </code><code>INT</code> <code>PRIMARY</code> <code>KEY</code> <code>NOT</code> <code>NULL</code> <code>AUTO_INCREMENT,</code>

<code>  </code><code>user_id </code><code>INT</code><code>,</code>

<code>  </code><code>CONSTRAINT</code>  <code>FOREIGN</code> <code>KEY</code> <code>tb_bill_fk (user_id)  </code><code>REFERENCES</code> <code>usert(id)</code>

<code>) ENGINE=INNODB</code>

继续阅读