故障现象:
因为一些原因,无法通过Dashboard删除某些虚拟机,这些虚拟机一直处于deleteing状态。
解决办法:
通过操作数据库直接删除实例记录:
[root@openstack ~]# mysql -uroot -ppasswd
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| cinder |
| glance |
| keystone |
| mysql |
| nova |
| test |
+--------------------+
7 rows in set (0.00 sec)
mysql> use nova;
……………………
Database changed
mysql> show tables;
mysql> select ID,display_name from instances;
+-----+--------------------------------------------+
| ID | display_name |
+-----+--------------------------------------------+
| 29 | vm-00 |
| 30 | vm-01 |
+-----+--------------------------------------------+
mysql> delete from instances where id = '29';
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`nova`.`block_device_mapping`, CONSTRAINT `block_device_mapping_instance_uuid_fkey` FOREIGN KEY (`instance_uuid`) REFERENCES `instances` (`uuid`))
MySQL 删除 id 为 29 的 instance 时触发外键限制错误,简单的办法是暂时关闭外键检查,等删除后再打开。
mysql> SET FOREIGN_KEY_CHECKS=0;
mysql> delete from instances where id = '29';
mysql> delete from instances where id = '30';
mysql> SET FOREIGN_KEY_CHECKS=1;
mysql> flush privileges;
mysql> quit;