mysql - 无法添加外键约束

标签 mysql foreign-keys foreign-key-relationship

首先,这是我的主要引用表mysql转储

-- phpMyAdmin SQL Dump
-- version 4.1.14
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Nov 17, 2015 at 03:15 AM
-- Server version: 5.6.17
-- PHP Version: 5.5.12

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */;

--
-- Database: `j_inventory`
--

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE IF NOT EXISTS `users` (   `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,   `username` varchar(200) COLLATE utf8_unicode_ci NOT NULL,   `password` varchar(500) COLLATE utf8_unicode_ci NOT NULL,  `real_password` varchar(250) COLLATE utf8_unicode_ci NOT NULL,   `role` varchar(50) COLLATE utf8_unicode_ci NOT NULL,   `full_name` varchar(250) COLLATE utf8_unicode_ci NOT NULL,   `remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,   `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',   `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',   `status` varchar(100) COLLATE utf8_unicode_ci NOT NULL,   PRIMARY KEY (`user_id`) ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=44 ;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

第二个表希望外键所在

-- phpMyAdmin SQL Dump
-- version 4.1.14
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Nov 17, 2015 at 03:14 AM
-- Server version: 5.6.17
-- PHP Version: 5.5.12

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */;

--
-- Database: `j_inventory`
--

-- --------------------------------------------------------

--
-- Table structure for table `user_details`
--

CREATE TABLE IF NOT EXISTS `user_details` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `phone` varchar(200) NOT NULL,   `age` int(100) NOT NULL,   `gender` varchar(50) NOT NULL,   `address` varchar(250) NOT NULL,   `course` varchar(250) NOT NULL,   `college` varchar(200) NOT NULL,   `year` int(11) NOT NULL,   `user_id` int(100) NOT NULL,   `updated_at` timestamp NOT NULL,   `created_at` timestamp NOT NULL,   PRIMARY KEY (`id`),   KEY `user_id` (`user_id`) ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

users_details中的外键(由于mysql错误“无法添加外键约束”而未设置)是'user_id',引用表是'users'表,其中外键的引用键是用户表上的 'user_id' 我试过了

ALTER TABLE user_details ADD FOREIGN KEY fk1(user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE NO ACTION;

但不幸的是,它抛出了一个错误

Error SQL query:

ALTER TABLE user_details ADD CONSTRAINT fk1 FOREIGN KEY (user_id) REFERENCES j_inventory.users(user_id) ON DELETE CASCADE ON UPDATE NO ACTION; MySQL said: Documentation

1215 - Cannot add foreign key constraint Documentation

有什么帮助、线索、想法、建议、建议吗?

最佳答案

您的用户 ID 在用户表中未签名。从您的用户表创建语句中的此字段中删除“未签名”并查看它是否有效。我认为您看到的是由于用户和 user_details 表中的 user_id 字段类型不匹配导致的错误

关于mysql - 无法添加外键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33748117/

相关文章:

MYSQL:一列中的数据依赖于另一列

Python SQL 条目不返回搜索结果

mysql - 创建表并在数据库浏览器中插入值(sqlite)

php - 我想从这个错误中得到确切的信息

java - hibernate如何创建createalias左连接?

SQL 数据库规范化和外键实践(可变/空白键?)

mysql - 无法添加外键约束,Mysql错误1215

java - 是否可以在没有对象到对象映射的情况下强制执行外键?

mysql - 如果未在 NOT NULL 枚举列上指定值,如何使 MariaDB 产生错误?

mysql - 如何使用 SQL 查询连接表并获取绑定(bind)列的数量?