繁体   English   中英

无法将外键/级联删除添加到表(无错误)

[英]cannot add foreign key/cascade delete to table (no error)

我有一张叫简历的桌子

这是表导出:

CREATE TABLE `resumes` (
  `id` int(10) UNSIGNED NOT NULL,
  `title` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `province_id` int(10) UNSIGNED NOT NULL,
  `city_id` int(10) UNSIGNED NOT NULL,
  `name` char(100) COLLATE utf8_unicode_ci NOT NULL,
  `last_name` char(100) COLLATE utf8_unicode_ci NOT NULL,
  `email` char(50) COLLATE utf8_unicode_ci NOT NULL,
  `mobile` char(255) COLLATE utf8_unicode_ci NOT NULL,
  `phone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `address` char(200) COLLATE utf8_unicode_ci NOT NULL,
  `confirm` tinyint(1) NOT NULL DEFAULT '0',
  `image` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `deleted_at` timestamp NULL DEFAULT NULL,
  `gender` tinyint(1) NOT NULL DEFAULT '0',
  `bdate` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
  `marrieg` tinyint(1) NOT NULL DEFAULT '0',
  `military_service` tinyint(1) NOT NULL DEFAULT '0',
  `text` text COLLATE utf8_unicode_ci,
  `password` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `token` varchar(100) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `resumes`
--
ALTER TABLE `resumes`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `email` (`email`),
  ADD UNIQUE KEY `mobile` (`mobile`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `resumes`
--
ALTER TABLE `resumes`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

我有另一个名为`resume_researches的表,我想添加外键约束并级联删除到该表(引用resumes表),我运行此代码

    ALTER TABLE resume_researches
   ADD CONSTRAINT `fk_resumes_resume_researches`
   FOREIGN KEY (`resume_id` )
   REFERENCES `resumes` (`id` )
   ON DELETE CASCADE ;  

这是输出

 MySQL returned an empty result set (i.e. zero rows). (Query took 0.0150 seconds.)
ALTER TABLE resume_researches ADD CONSTRAINT `fk_resumes_resume_researches` FOREIGN KEY (`resume_id` ) REFERENCES `resumes` (`id` ) ON DELETE CASCADE

但是在phpmyadmin中没有关系视图,当我导出此表时,结果是

CREATE TABLE `resume_researches` (
  `id` int(11) NOT NULL,
  `resume_id` int(11) UNSIGNED NOT NULL,
  `title` varchar(100) COLLATE utf8_persian_ci NOT NULL,
  `text` text COLLATE utf8_persian_ci NOT NULL,
  `date` varchar(50) COLLATE utf8_persian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `resume_researches`
--
ALTER TABLE `resume_researches`
  ADD PRIMARY KEY (`id`),
  ADD KEY `fk_resumes_resume_researches` (`resume_id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `resume_researches`
--
ALTER TABLE `resume_researches`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

怎么了 ? 为什么在结构中没有对resumes表的引用?

FOREIGN KEYs不适用于MyISAM; 改用InnoDB。

不要对可变长度列使用CHAR 使用VARCHAR

不要混合排序规则(utf8_unicode_ci与utf8_persian_ci)。 (在某些情况下还可以,但在这里可能不行。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM