Ho alcuni problemi con l'eliminazione dei dati utilizzando Laravel 5. Mi sembra di essere bloccato su un "vincolo di chiave esterna", mentre non vedo perché.Laravel Eloquent troncato - Vincolo chiave esterna
Nel mio modello di database corrente ho una tabella dei datapoints, che ha una chiave esterna nella tabella dei sensori (datapoints.sensors_id -> sensor.id).
Il codice che sto cercando:
Route::get('/truncateData', function() {
DB::table('datapoints')->truncate();
DB::table('sensors')->truncate();
return 'Done...';
});
Il risultato:
SQLSTATE [42000]: Errore di sintassi o violazione di accesso:. 1701 non possibile troncare una tabella di riferimento in un vincolo di chiave esterna (
alerting
datapoints
, VINCOLOdatapoints_sensor_id_foreign
FOREIGN KEY (sensor_id
) . RIFERIMENTIalerting
sensors
(id
)) (SQL: troncaresensors
)
Comprenderei questo vincolo se l'ordine fosse inverso (eliminando prima i sensori), ma quando i punti dati sono vuoti, non dovrebbero esserci problemi nell'eliminazione dei sensori? Ho anche provato:
DB::table('datapoints')->delete();
DB::table('sensors')->delete();
return 'Done...';
Infine ho anche provato ad aggiungere in modo esplicito 'DB :: commit()' tra le dichiarazioni di eliminazione, ma tutti lo stesso risultato.
È normale? Mi sto perdendo qualcosa?
Grazie in anticipo.
Cheers,
Wesley
Infatti. Alla fine ho cancellato le righe invece di troncare, ma anche questo funzionerebbe. Stavo sbagliando quando ho detto che il problema si presentava anche con le eliminazioni. – Wesley