Uso il datamapper con ruby per archiviare dati su determinate tabelle.Come troncare le tabelle correttamente?
Numerose tabelle contengono grandi quantità di informazioni e desidero cancellarle quando l'utente "ricostruisce il database" (in pratica elimina tutto e ricalcola i dati).
Inizialmente ho provato Forum.all.destroy e l'ho fatto per tutti i diversi tavoli, ma ho notato che alcuni di loro sono stati cancellati da phpmyadmin. posso solo immaginarlo a causa delle chiavi straniere. Anche se davvero non lo so perché il mio altro tavolo con le chiavi di Foreing è stato cancellato con successo. Per non parlare, id piuttosto che "zero" è fuori comunque in modo che le chiavi non arrivino a numeri straordinariamente grandi (come la chiave # 500.000).
Ho quindi provato a eseguirlo con il codice riportato di seguito, ma non cancella i tavoli a causa di "vincoli di chiave esterna". Voglio forzarlo a funzionare perché so per certo che sto eliminando tutte le tabelle che si basano l'una sull'altra (non sto cancellando solo 2 tabelle, una tabella delle impostazioni e una tabella di archiviazione casuale, nessuna delle quali usa chiavi esterne).
Finora ho ...
adapter = DataMapper.repository(:default).adapter
adapter.execute('TRUNCATE TABLE `forums`, `dates`, `remarks`');
Sarebbe bene, tranne la sintassi mysql è sbagliato a quanto pare. quindi questo è la prima cosa
ho fatto 1 da 1 a phpMyAdmin e quando l'ho fatto in questo modo si dice
Cannot truncate a table referenced in a foreign key constraint
qualche idea su come fare questo in rubino? Ho provato a eseguire ciascun comando separatamente all'interno dell'app e non ha eliminato nulla. Ho quindi provato a eseguirli uno per uno in phpmyadmin in ordine e dice ancora # 1701 - Impossibile troncare una tabella a cui fa riferimento un vincolo di chiave esterna – Tallboy
scratch that! ha funzionato ... era solo lì per un millisecondo prima di riaggiungere i miei dati e io non l'ho preso in realtà troncando. Grazie! – Tallboy
Ho troncato le tabelle figlio, ma anche in questo caso non riesce durante l'eliminazione della tabella padre. Ad ogni modo, ho usato l'hack per disabilitare i controlli delle chiavi esterne per ora. – inquisitive