pisałem migrację z następujących czynności:Migracja do tworzenia tabeli podnosi Mysql2 :: Error: Tabela nie istnieje
class CreateTableSomeTable < ActiveRecord::Migration[5.1]
def change
create_table :some_tables do |t|
t.references :user, foreign_key: true
t.references :author, references: :user, foreign_key: true
t.text :summary
end
end
end
Jest to podstawowa że migracja jest tworzenie tabeli bazy danych. Jednakże: gdy uruchamiam rails db:migrate
bardzo dziwny komunikat o błędzie przerywa migracją:
Mysql2::Error: Table 'my_database.some_tables' doesn't exist: SHOW FULL FIELDS FROM 'some_tables'
to tak jakby błąd mówi, że nie można utworzyć tabeli, ponieważ tabela nie istnieje, co nie ma sensu.
Czego nie wyglądały na i próbowałem:
- przeglądu database.yml która wydaje się dobrze. Nic się nie zmieniło, a ja niedawno uruchamiania innych migracje dobrze (chociaż nie ma migracje że tworzone tabele bazy danych)
- prowadził
bundle
aby zapewnić wszystkie kamienie zostały zainstalowane - skasowany plik
schema.rb
, odtworzył bazę danych z danymi z innej kopii, i uruchomiłemrake db:schema:dump
, aby odtworzyć plikschema.rb
. Próbowałem ponownie uruchomić migrację i nadal mam ten sam błąd.
Używam rails 5.1.1
jak również mysql2 0.4.6
jakieś wskazówki, w jaki sposób mogę uzyskać migrację do uruchomienia?
Wygląda na to, że masz kaczki z rzędu, więc jest to prawdopodobnie zbyteczne pytanie, ale: Czy sprawdziłeś, że jest to specyficzna migracja powodująca problem, na przykład umieszczając kod debugowania w migracji, lub za pomocą zmiennej środowiskowej, aby uruchomić tylko jedną migrację? Co pojawia się w pliku dziennika, kiedy przeprowadzasz migrację, która jest powiązana z tą tabelą? –
Spróbuj uruchomić 'rake db: migrate: status', aby zobaczyć migracje, które zostały zastosowane do bazy danych. Być może dowiadujesz się, że łączysz się z innym schematem lub odkrywasz, że migracja, która zawodzi, nie jest tą, która Twoim zdaniem powoduje awarię. – Bustikiller