我在Mac上使用PHPMyAdmin 4.6.0(当前稳定版)来管理MySQL表 . 我创建了一个包含以下模式的表:
CREATE TABLE `table1` (
`id` int(11) NOT NULL,
`name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
`table2id` int(11) NOT NULL,
`col2` float DEFAULT NULL,
`col3` float DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `table1`
ADD PRIMARY KEY (`id`),
ADD KEY `fk_table1_table2` (`table2id`);
ALTER TABLE `table1`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
从table1查看数据时,我使用左侧的复选框选择一些行,然后按表下方的删除链接 . 我被重定向到另一个页面,显示要执行的以下SQL查询:
DELETE FROM `table1` WHERE ;
DELETE FROM `table1` WHERE ;
DELETE FROM `table1` WHERE ;
请注意,此处缺少数据集的ID,导致查询失败 . 如果我按下一行中的“删除”按钮,会发生类似的事情 . 出现一个模态,显示以下输出:
Do you really want to execute "DELETE FROM `table1` WHERE LIMIT 1"?
请注意,此处也缺少 WHERE
子句 . 然而,它适用于另一个数据库中的不同表,甚至同一数据库中的另一个表 . 例如,另一个表具有以下模式:
CREATE TABLE `table3` (
`id` int(11) NOT NULL,
`name` varchar(70) COLLATE utf8_unicode_ci DEFAULT NULL,
`shortname` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `table3`
ADD PRIMARY KEY (`id`);
ALTER TABLE `table3`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
实际上我看不出会导致PHPMyAdmin这种行为的任何区别 . 任何的想法?
2 回答
您可能已设置外键约束
on_delete
. 所以,转到 Structure tab 并单击 Relation view . 在那里,您可以找到外键约束 . 将 On delete 选项更改为 No Action .它可能会奏效 .
更新 - phpMyAdmin 4.6.6修复此错误 .
How to upgrade phpMyAdmin in XAMPP to latest?
原始邮政
我可以在我的环境中重现错误,但不能在demo.phpmyadmin.net上重现错误 . 如果您的InnoDB或MyISAM表名称在任何位置具有任何大写字符,如下所示,则可能存在此问题 . 我在运行phpMyAdmin版本4.5.2,10.1.19的Mac上运行XAMPP - MariaDB - 源代码发布,PHP版本5.6.28 .