2016-03-28 6 views
0

Ich habe eine .SQL-Datei, die mit MySQL Workbench .Ich erstellt hat Export-Datei durchgeführt von Workbench zu .SQL .Aber wenn ich versuche, diese zu importieren .sql Datei in localhost/phpmyadmin zeigt einen Fehler.Error- Beim Import von SQL-Datei in phpMyAdmin

1005 - Tabelle amarjobs kann nicht erstellt werden. profiles (errno: 150 "Foreign Schlüsselbedingung ist falsch gebildet")

Dies wird profiles Tabelle:

-- Table `amarjobs`.`profiles` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `amarjobs`.`profiles` (
    `id` INT NOT NULL AUTO_INCREMENT COMMENT 'job seeker\'s profile table', 
    `userID` INT NULL, 
    `firstName` VARCHAR(45) NULL, 
    `lastName` VARCHAR(45) NULL, 
    `middleName` VARCHAR(45) NULL, 
    `DOB` DATE NULL, 
    `gender` ENUM('M','F','Other') NULL, 
    `featuredProfile` ENUM('Y','N') NULL DEFAULT 'N', 
    `email` VARCHAR(100) NULL, 
    `phone` VARCHAR(50) NULL, 
    `summary` VARCHAR(500) NULL, 
    `profilePic` VARCHAR(32) NULL, 
    `created_at` TIMESTAMP NULL, 
    `updated_at` TIMESTAMP NULL, 
    PRIMARY KEY (`id`), 
    INDEX `fkProfilesUserID_idx` (`userID` ASC), 
    CONSTRAINT `fkProfilesUserID` 
    FOREIGN KEY (`userID`) 
    REFERENCES `amarjobs`.`users` (`id`) 
    ON DELETE NO ACTION 
    ON UPDATE CASCADE) 
ENGINE = InnoDB; 

Einige Tabelle importiert wurde, aber warum profiles Tabelle nicht importiert? Können Sie mir sagen, wo das Problem liegt?

+0

überprüfen Fremdschlüssel und referenzierte Primärschlüssel Spalte Typ sollte es gleich –

+0

Bitte werfen Sie einen Blick 'Benutzer' Tabelle und 'Profile' Tabelle in http://pastebin.com/asPW444K –

Antwort

2

Angenommen, Sie importieren Daten von einem anderen Server. Es sollte also keine Probleme im Zusammenhang mit der Erstellung von Fremdschlüsseln geben ...

Zuerst importieren Sie die übergeordnete Tabelle users Tabelle, dann können Sie diese Tabelle importieren. Das ist der saubere Weg.

Andernfalls können Sie nach dem Festlegen von foreign_key_checks disable zwangsweise importieren. Aber du solltest es nicht tun und saubere Wege gehen.

Update:

Sie können alle zugehörigen Tabellen, die von dieser Abfrage erhalten:

SELECT table_name AS 'My_Table',REFERENCED_TABLE_NAME AS 'Parent_Table' FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA ='pass_your_db_here' AND table_name in ('table1','table2',.....'tablen') AND REFERENCED_TABLE_NAME IS NOT NULL; 

obige Abfrage werden alle Eltern Tabellen für alle Tabellen in parent_table columnd bieten so erhalten einzigartige Tabellen von my_table & parent_table-Liste und Sicherung dieser Tabellen vom Quellserver und Wiederherstellung auf dem Zielserver.

+0

Wenn ich in Ihrem Weg dann' Profile 'Tabelle wird importiert, aber eine andere Tabelle' profile_skills' zeigt denselben Fehler.Ich möchte eigentlich wissen, was das Problem ist? –

+2

Wie Sie Backup gemacht ... Sie sollten Backup von mysqldump Dienstprogramm nehmen und dann von MySQL-Dienstprogramm importieren ..... tatsächlich, wenn Sie eine untergeordnete Tabelle dann zuerst wird es überprüfen seine Referenz/Eltern-Tabelle so normalerweise zuerst müssen Sie Erstelle Elterntabelle, dann kannst du die Kindtabelle ... –

+0

für einen Trick, den du machen kannst, importieren: öffne deine Backup-Datei (.sql) in einem beliebigen Editor nach deiner Plattform window/linux und füge eine Zeile "set foreign_key_checks = 0;" im Anfang und "set foreign_key_checks = 1;" Am Ende ... wird es alle Ihre Tabellen importieren ...... aber wenn irgendeine Elterntabelle in Ihrer Datenbank fehlt, dann wird die Einschränkung nicht richtig funktionieren ... –

0

Sie sollten (ID) einen Primärschlüssel in amarjobs machen. users Tabelle.

Verwandte Themen