[MySQL]表创建外键失败:ERROR 1005 (HY000): Can't create table (errno: 150)
在数据库中建立一个新表(表引擎为InnoDB)时, 需要用到外键, 所以就在建表的时候加了一句foreign key (column) references table_name。但是执行时出现
ERROR 1005 (HY000): Can't create table (errno: 150)
通过查找得知, 这是由于添加外键约束引起的错误, 利用show engine innodb status指令查看数据库的状态信息, 查看最近外键信息部分
------------------------
LATEST FOREIGN KEY ERROR
------------------------
131008 11:28:15 Error in foreign key constraint of table www/shares:
foreign key(user_id) references profile):
Syntax error close to:
)
------------
查询mysql参考手册http://dev.mysql.com/doc/refman/5.1/zh/tutorial.html#example-foreign-keys, 发现还可以通过在属性后面需要添加外键约束
preferences table(column)
eg: user_id varchar(12) not null references profile(user_id),
用此方法添加外键约束时, 虽然不会再提示语法错误,成功建立表, 但是按照这种方式使用, references子句不会显示在show create table或describe的输出中, 该子句没有实际的效果,只作为 备忘录或注释来提醒,你目前正定义的列指向另一个表中的一个列。
innodb表外键的建立, 详情请看http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb-foreign-key-constraints。
两个表建立外键, 一定要使得两个表的除了属性不一样以外, 其他所有的东西都要一样。
尝试了仨小时, 我最终才发现, 我之所以无法建立外键约束, 是因为profile在最初建立时在建表的语句后面加了一句default charset=utf8, 使得profile表里所有类型是字符的, 编码都是utf8, 当 我新建表时, 没有再设置default charset, 所以致使两个表在字符编码上存在很大的区别, 从而无法建立外键约束。
如果你也无法建立外键约束, 而有找不出错误, 那就尝试一下, 将两个表删掉,以相同的方式重新建立两个新的表。
[MySQL]表创建外键失败:ERROR 1005 (HY000): Can't create table (errno: 150)的更多相关文章
- ERROR 1005 (HY000): Can't create table 'students.#sql-d9
今天在创建外键的时候出现以下错误 ERROR 1005 (HY000): Can't create table 'students.#sql-d99_3' (errno: 150) 格式 ...
- ERROR 1005 (HY000): Can't create table'matrix.system_log' (errno: 150)
CREATE TABLE `user` (`id` bigint(32) NOT NULL AUTO_INCREMENT ,`name` varchar(32) CHARACTER SET utf8 ...
- 解决报错:ERROR 1005 (HY000): Can't create table 'market.orders' (errno: 150)
1.描述问题: 在这里我新建了两张表(customers_info和orders) 表一:customers_info CREATE TABLE customers_info ( c_num INT( ...
- Mysql错误问题:ERROR 1005 (HY000): Can't create table 'crm_1.tbl_client' (errno: 150)
MySQL外键创建条件: 1.两个表必须是InnoDB数据引擎2.外键表的外键字段必须是主键3.字段类型必须一致 创建表时创建外键: create table tbl_client(userName ...
- Mysql表创建外键报错
数据库表A: CREATE TABLE task_desc_tab ( id INT(11) PRIMARY KEY NOT NULL COMMENT '自增主键' AUTO_INCREMENT, t ...
- MySQL里创建外键时错误的解决
--MySQL里创建外键时错误的解决 --------------------------------2014/04/30 在MySQL里创建外键时(Alter table xxx add const ...
- 1、Mysql无法创建外键的原因 2、MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1. 两个字段的类型或者大小不严格匹配.例如,如果一个 ...
- Mysql无法创建外键的原因
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1. 两个字段的类型或者大小不严格匹配.例如,如果一个 ...
- 转!!!Mysql无法创建外键的原因
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1. 两个字段的类型或者大小不严格匹配.例如,如果一个 ...
随机推荐
- Centos 查看版本
# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core)
- UML类图(二)--------类与类之间的关系之依赖,继承,接口与实现关系
依赖(Dependency)关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系.大多数情况下,依赖关系体现在某个类的方法使用另一个类 ...
- 如果看看机器ip和域名ip
1.如果查看一个机器IP ifconfig或hostname -i //linux ipconfig //windows 2.查看一个域名对应ip ping www.baidu.com 下面会显示域名 ...
- 【VS2013生成DirectX Tutorials时遇到的错误】无法解析的外部符号 _D3D10CreateDeviceAndSwapChain@32
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/3696472.html 今天尝试编译DirectX10中的一个Turorials时, ...
- js抛物线
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- AOP注解式拦截
1. 自己定义的拦截注解 package com.spring.aop; import java.lang.annotation.Documented; import java.lang.annota ...
- AMD 规范使用总结
转自:http://www.jianshu.com/p/9b44a1fa8a96 AMD模式 define和require这两个定义模块.调用模块的方法,合称为AMD模式.它的模块定义的方法非常清晰, ...
- Java String Split Method
Java String.split() method 有如下几种特殊情况: 1. 分隔符出现在首尾 public static void main(String args[]) { String St ...
- 2、配置Selenium RC
1.相关Jar包:链接: https://pan.baidu.com/s/1YLp-_5t7heyzPg550BWTGg 密码: w7ne 2.启动Selenium的方法 (1)cmd命令进入sele ...
- 关于postman、postman interceptor的安装、配置问题
由于app中有一些鉴权问题,需要携带浏览器的cookie. 不然的话不能够正确测试接口,就在chrome(这里下载的来源是Google商店)中添加了postman interceptor插件. 然后发 ...