Ich möchte, dass die Primärschlüsselwerte wieder bei 1 beginnen.
ruby-on-rails
Yukas
quelle
quelle
Person.connection.execute('delete from people' )
Person.connection.execute("update sqlite_sequence set seq = 0 where name = 'People'" )
ActiveRecord::Base.connection.execute("DELETE from 'yourtablename'")
und es funktionierte, weil es mir einen Fehler gab, der sagtesqlite_sequence where name = 'yourtablename' is not a valid table name
oder so etwas.Viele Leute (wie ich) kommen hierher, um herauszufinden, wie alle Daten in der Tabelle gelöscht werden können. Bitte schön:
oder
destroy_all überprüft Abhängigkeiten und Rückrufe und dauert etwas länger. delete_all ist eine reine SQL-Abfrage.
Weitere Informationen hier: http://apidock.com/rails/ActiveRecord/Base/delete_all/class
quelle
Ich habe Folgendes von der Rails-Konsole verwendet, um alles in der Tabelle zu löschen und dann den Indexzähler zurückzusetzen (Ruby 2 & Rails 4):
quelle
model_name
Befehl im Reset Plural sein muss, wie der tatsächliche Name der Tabelle, NICHT der singuläre Name des Modells.ActiveRecord::Base.connection.reset_pk_sequence!(:plural_model_name)
.@ khellls Link ist hilfreich. Der Befehl, mit dem Sie eine Tabelle abschneiden möchten, lautet:
quelle
Seit Rails 4.2 können Sie
truncate
direkt auf einer ActiveRecord-Verbindung verwenden :Dadurch werden alle Daten gelöscht und die Zähler für die automatische Inkrementierung in der Tabelle zurückgesetzt. Funktioniert in MySQL und Postgres, funktioniert nicht in SQLite.
quelle
Fügen Sie
gem 'database_cleaner'
Ihrem Gemfile hinzu, führen Sie es aus$ bundle install
und dann:Sie können weitere Tabellen angeben:
Wenn Sie den letzten Parameter weglassen, wird die gesamte Datenbank abgeschnitten:
quelle
Ich benutze Rails 4.2.0 und Sqlite3
Folgendes hat bei mir funktioniert (ein bisschen von all dem oben Genannten):
Ich konnte dann neue Datensätze zu meiner Tabelle hinzufügen, wobei der Index bei 1 begann
quelle
Wenn Sie nach einer Antwort auf diese Frage suchen, wenn die Datenbank Postgres ist, können Sie dies über die Rails-Konsole tun:
Wobei das
accounts
in deraccounts_id_seq
der Name der Tabelle ist.quelle