2016-11-02 4 views
0

ich einen seltsamen Fall habe: Es funktioniert:Tabelle kann nicht umbenennen

rename table `test` to `test3` 

aber das funktioniert nicht:

rename table `test` to `test1` 

Fehler bei Umbenennen von (errno: 150 - über Fremdschlüssel ist falsch gebildet)

UPDATE:

I gesetzt:

SET FOREIGN_KEY_CHECKS=0; 

ich nicht Fremdschlüssel haben

enter image description here

CREATE TABLE `test` (`agglomeration_id` int(11) NOT NULL, `carpark_id` int(11) NOT NULL, `numer_urzadzenia` char(3) NOT NULL, 
         `payments_zone` char(1) DEFAULT NULL, `status` tinyint(1) DEFAULT NULL, `time_stamp` bigint(20) DEFAULT NULL, 
         `resource_uri` char(200) DEFAULT NULL, `test` int(1) NOT NULL, PRIMARY KEY (`test`)) 
    ENGINE=InnoDB DEFAULT CHARSET=utf8 
+1

Hat die Tabelle hat einen Fremdschlüssel namens 'test1'? –

+0

Fügen Sie die Fremdschlüssel zu dieser Tabelle bitte hinzu – rbr94

Antwort

0

Sie haben einen Fremdschlüssel zu einer Spalte der Testtabelle, so dass, dass Sie bedeutet Sie müssen die Einschränkungen löschen, bevor Sie sie umbenennen, oder die Fremdschlüsseleinschränkungen deaktivieren und anschließend umbenennen.

für MySQL Versuch:

SET FOREIGN_KEY_CHECKS=0; --> Temporary disables foreign key constraints 

für SQL Versuch:

EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all" --> Disable foreign key constraints 
+0

Die genaue Abfrage funktionierte in meinem MySQL. Ich habe die Tabellennamen ohne Anführungszeichen geschrieben. –

+0

Ich spreche über die Abfragen der Erstellung der Tabelle und dann umbenennen. –

+1

SELECT DISTINCT (constraint_name) FROM informationsschema.table_constraints WHERE constraint_schema = 'test1' ORDER BY constraint_name ASC; –

Verwandte Themen