Fortsetzung für Node.js: ER_NO_SUCH_TABLE

9

Ich bin neu in Sequelize und Node.js.
Ich habe für test sequelize codiert, aber es ist ein Fehler aufgetreten. "ER_NO_SUCH_TABLE: Tabelle 'db.node_tests' existiert nicht '
Der Fehler ist sehr einfach.
Ich möchte jedoch Daten aus der Tabelle " node_test " abrufen.
Ich denke, Sequelize fügt 's' Charakter.

Da ist mein Quellcode.

%Vor%

Ich habe bereits die Tabelle "node_test" erstellt und Daten mit mysql client eingefügt.

Habe ich die Verwendung missverstanden?

    
Minkyu Kim 22.12.2012, 11:59
quelle

4 Antworten

9

Ich fand die Antwort meine eigene Frage.

Ich habe die folgende Sequelize-Methode hinzugefügt. {define:{freezeTableName:true}}

Sequelize fügt dann 's' Zeichen nach dem Tabellennamen nicht an.

    
Minkyu Kim 22.12.2012, 23:10
quelle
3

Sequelize verwendet standardmäßig den Plural des übergebenen Modellnamens. Es wird also nach der Tabelle "node_tests" oder "NodeTests" gesucht. Es kann auch die Tabelle für Sie erstellen, wenn Sie das möchten.

%Vor%

Sync versucht, die Tabelle zu erstellen, wenn sie nicht bereits existiert. Sie können auch die vorhandene Tabelle löschen und eine neue erstellen, indem Sie sync({ force: true }) verwenden. Überprüfen Sie die SQL-Befehle in Ihrer Befehlszeile für weitere Details zu dem, was passiert.

    
sdepold 22.12.2012 13:41
quelle
2

Obwohl die Antwort gut funktioniert, empfehle ich heute die Verwendung der Option tableName , wenn das Modell deklariert wird:

%Vor%

Ссылка

    
sdepold 27.11.2013 06:49
quelle
1

Wenn Sie ein Modell für eine vorhandene Tabelle definieren, müssen Sie zwei Optionen für die Fortsetzung auf:

festlegen
  1. finde deinen Tabellennamen wie er ist und
  2. Sorgen Sie nicht um die Standardspalten updatedAt und createdAt von sequelize, die sie erwartet.

Fügen Sie einfach beide Optionen wie folgt hinzu:

%Vor%

Beachten Sie den Parameter options :

%Vor%

Wenn beide Optionen fehlen, werden entsprechende Fehler bei der Verwendung von Sequelize-Methoden wie nodeTest ausgelöst. findAll () .

%Vor%

Alternativ können Sie:

  1. Erstellen Sie eine neue Tabelle durch Sequelize. Es fügt "s" an den Tabellennamen an und erstellt zwei Zeitstempelspalten als Standardwerte oder
  2. Verwenden Sie sequelize-auto , ein fantastisches npm-Paket, um Modelle aus Ihrer bestehenden Datenbank programmatisch zu erstellen.

Hier ist die Fortsetzung Dokumentation für Optionskonfigurationen.

    
Pageii Studio 21.01.2017 20:20
quelle

Tags und Links