如何在pgAdmin中解锁锁定的表格列?无法设置id主键删除空行怎么办
操作前请先备份整张表,避免误操作导致数据丢失。
解决步骤
以下是针对你截图中phpMyAdmin管理的MySQL数据库的适配操作流程:
第一步:解除列锁定
列锁定通常由3种情况导致,按优先级依次尝试:
- 事务/会话锁占用:执行命令查看锁状态
找到对应锁表的会话ID:SHOW OPEN TABLES WHERE In_use > 0;
杀掉对应会话即可解锁:SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE db = '替换为你的数据库名' AND INFO LIKE '%替换为你的表名%';KILL 查到的会话ID; - phpMyAdmin界面锁:常见于浏览模式下的临时编辑锁,直接退出当前phpMyAdmin登录,重新打开页面进入表操作页即可解除。
- 权限不足:确认当前数据库账号拥有对应表的
DELETE、ALTER操作权限。
第二步:删除id为空的行
解锁后优先用命令执行删除,比界面操作更稳定:
DELETE FROM 替换为你的表名 WHERE id IS NULL OR TRIM(id) = '';
如果删除时报外键约束错误,临时关闭外键检查后再操作:
SET FOREIGN_KEY_CHECKS = 0; DELETE FROM 替换为你的表名 WHERE id IS NULL OR TRIM(id) = ''; SET FOREIGN_KEY_CHECKS = 1;
第三步:设置id为主键
确认id列所有值非空且唯一后,执行主键设置命令:
ALTER TABLE 替换为你的表名 ADD PRIMARY KEY (id);
如果需要id后续自动生成,可同时设置自增属性(注意id字段类型要为数值型):
ALTER TABLE 替换为你的表名 MODIFY COLUMN id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY;
内容的提问来源于stack exchange,提问作者Fofah
相关产品推荐
相关产品推荐

