2015-11-17 4 views
1

Первый, вот моя главная справочная таблица 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 @[email protected]@CHARACTER_SET_CLIENT */; /*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; /*!40101 SET @[email protected]@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 [email protected]_CHARACTER_SET_CLIENT */; /*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; /*!40101 SET [email protected]_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 @[email protected]@CHARACTER_SET_CLIENT */; /*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; /*!40101 SET @[email protected]@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 [email protected]_CHARACTER_SET_CLIENT */; /*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; /*!40101 SET [email protected]_COLLATION_CONNECTION */; 

внешний ключ (не установлен из-за к ошибке mysql «Невозможно добавить ограничение внешнего ключа») в user_details является «user_id», а ссылочная таблица - это таблица «пользователей», где ссылочным ключом для внешнего ключа является «user_id» в таблице пользователей, и я пробовал это

ALTER TABLE user_details ADD FOREIGN KEY fk1 (user_id) ССЫЛКИ пользователей (user_id) ВКЛ УДАЛИТЬ КАСКАД ПО ОБНОВЛЕНИЮ НЕТ ДЕЙСТВИЙ;

но, к сожалению, и, к сожалению, он бросает мне ошибку

Ошибка SQL запросов:

ALTER TABLE user_details ADD CONSTRAINT fk1 FOREIGN KEY (user_id) Лит j_inventory. users (user_id) ON DELETE CASCADE ON UPDATE NO ACTION; MySQL говорит: Документация

1215 - Невозможно добавить ограничение внешнего ключа ДОКУМЕНТАЦИЯ

любая помощь, подсказки, идеи, предложения, рекомендации, пожалуйста?

ответ

3

Ваш идентификатор пользователя не указан в таблице пользователей. Удалите 'unsigned' из этого поля в вашей таблице create create statement и посмотрите, работает ли он. Я думаю, что вы видите ошибку, вызванную несоответствием между типами полей user_id для ваших пользователей и таблицами user_details.

Смежные вопросы