Goedemiddag, net nieuw hier. ik hoop dat iemand mij kan helpen. Ik probeer mijn databast terug te zetten met behulp van Bigdumper maar ik krijg deze foutmelding:
Query: CREATE TABLE `t5s10_osmap_sitemap_menus` (
`sitemap_id` int(11) unsigned NOT NULL,
`menutype_id` int(11) NOT NULL,
`changefreq` enum('always','hourly','daily','weekly','monthly','yearly','never') NOT NULL DEFAULT 'weekly',
`priority` float NOT NULL DEFAULT '0.5',
`ordering` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`sitemap_id`,`menutype_id`),
KEY `idx_ordering` (`sitemap_id`,`ordering`),
KEY `idx_sitemap_menus` (`sitemap_id`),
CONSTRAINT `fk_sitemaps_menus` FOREIGN KEY (`sitemap_id`) REFERENCES `t5s10_osmap_sitemaps` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
In phpMyAdmin kan je eenvoudig de structuur en eigenschappen van je database, tabellen en velden aanpassen. En anders moet je de query even op de juiste manier ombouwen, zodat je die weer aan MySQL kan voeren.
Is 'bigdumper' de enige manier? Zijn er geen manieren via phpMyAdmin of via een Hosting control panel (zoals DirectAdmin?), of anderzijds misschien via SSH als je daar ervaring genoeg voor hebt?
?Onbekende gebruiker
16-10-2020 16:42
Hoi,
het sql bestand is blijkbaar te groot om te importeren via phpmyadmin.
Ik krijg telkens een foutmelding.
Maar het probleem zit dus in de instellingen van veld 'id' in tabel: t5s10_osmap_sitemaps
Die komt niet overeen met zijn tegenoverliggende veld in 't5s10_osmap_sitemap_menus'
en op het moment dat je t5s10_osmap_sitemap_menus aanmaakt, bestaat t5s10_osmap_sitemaps al wel?
(al zou ik dan meer een melding in de trand van "tabel t5s10_osmap_sitemaps not found" verwachten)
?Onbekende gebruiker
21-10-2020 14:00
gewijzigd op 21-10-2020 14:02
MySQL controleert de relaties tussen gegevens al bij het importeren, maar de foutmelding voorkomt dat je de gegevens kunt importeren. Wat je wilt is de gegevens überhaupt eerst importeren, om daarna de relaties te corrigeren.
Je kunt aan MySQL vragen om de relaties tussen gegevens in verschillende tabelkolommen tijdelijk niet te bewaken, zodat je de gegevens in ieder geval kunt importeren.
Wil je dat alleen voor de huidige sessie doen, dan kan je dit MySQL-commando gebruiken:
SET FOREIGN_KEY_CHECKS=0;
Wil je dat voor heel de MySQL database doen, bijvoorbeeld in een aparte sessie via phpMyAdmin, dan kan je deze gebruiken:
SET GLOBAL FOREIGN_KEY_CHECKS=0;
Na het corrigeren van de gegevens kan je de controle weer aanzetten met de waarde 1.
met de Foreign_key_checks setting kun je de foutmelding
-- ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails
voorkomen, bij een import waarbij je de volgorde van invoeren niet eenvoudig kunt regelen. (je wilt bijvoorbeeld eerst de eigenschappen van een product inserten en pas daarna het product zelf. Dus eerst het je een berg eigenschappen die nog naar een niet-bestaand product wijzen)
Maar TS heeft een probleem om de de FK relatie te leggen tussen 2 tabellen.
(errno: 150 "Foreign key constraint is incorrectly formed")
Dat komt vaker voor als je bijvoorbeeld in de ene tabel een id-kolom hebt van het type INT(11)
en in de andere tabel de verwijzing naar die tabel/kolom doet in een kolom van een ander type.
Bijvoorbeeld in een kolom van het type DATE.
Nu ligt het er met DATE erg dik bovenop dat het een ander type is, maar ook een DECIMAL, TINYINT of BIGINT leidt tot deze foutmelding.
Maar in de aanwijzingen van TS komt not niet echt naar voren waar de schoen hier wringt:
in beide tabellen lijkt het een INT(11) UNSIGNED te zijn.