In MySQL I want to drop a table.
I tried a lot things but I keep getting the error that the table named
I tried a lot things but I keep getting the error that the table named
bericht
can't be dropped. This is the error I'm getting:
#1217 - Cannot delete or update a parent row: a foreign key constraint fails
How do I drop this table?
Answers
This should do the trick:
SET FOREIGN_KEY_CHECKS=0; DROP TABLE bericht; SET FOREIGN_KEY_CHECKS=1;
As others point out, this is almost never what you want, even though it's whats asked in
the question. A more safe solution is to delete the tables depending on
bericht
before
deleting
bericht
. See CloudyMarble answer on how to do that. I use bash and the
method in my post to drop all tables in a database when I don't want to or can't delete
and recreate the database itself.
The
#1217
error happens when other tables has foreign key constraints to the table
you are trying to delete and you are using the InnoDB database engine. This solution
temporarily disables checking the restraints and then re-enables them.
Read the documentation for more. Be sure to delete foreign key restraints and
fields in tables depending on
bericht
, otherwise you might leave your database
in a broken state.
Use
show create table tbl_name
to view the foreign keys
You can use this syntax to drop a foreign key:
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
There's also more information here:
I realize this is stale for a while and an answer had been selected, but how about the
alternative to allow the foreign key to be NULL and then choose
ON DELETE SET NULL.
Basically, your table should be changed like so:
ALTER TABLE 'bericht' DROP FOREIGN KEY 'your_foreign_key';
ALTER TABLE 'bericht' ADD CONSTRAINT 'your_foreign_key'
FOREIGN KEY ('column_foreign_key') REFERENCES 'other_table'
('column_parent_key') ON UPDATE CASCADE ON DELETE SET NULL;
Personally I would recommend using both "ON UPDATE CASCADE"
as well as "ON DELETE SET NULL" to avoid unnecessary complications,
however your set up may dictate a different approach.
0 comments:
Post a Comment