sequelize pour Node.js : ER_NO_SUCH_TABLE
Je suis nouveau sur sequelize et Node.js.
J'ai codé pour le test sequelize, mais une erreur s'est produite "ER_NO_SUCH_TABLE : Table 'db.node_tests' n'existe pas"
L'erreur est très simple.
Cependant, je tiens à obtenir des données à partir de "node_test" de la table.
Je pense que sequelize ajoute " s " de caractère.
Il y a mon code source.
var Sequelize = require('sequelize');
var sequelize = new Sequelize('db', 'user', 'pass');
var nodeTest = sequelize.define('node_test',
{ uid: Sequelize.INTEGER
, val: Sequelize.STRING} );
nodeTest.find({where:{uid:'1'}})
.success(function(tbl){
console.log(tbl);
});
J'ai déjà créer une table "node_test", et insérer des données à l'aide de mysql client.
Fait j'ai mal compris l'utilisation?
Je suis de l'utilisation de Mysql 5.5.28 / sequelize 1.6.0-beta4 / Node.js 0.8.15.
OriginalL'auteur Minkyu Kim | 2012-12-22
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la réponse à ma propre question.
J'ai ajouté Sequelize option de la méthode suivante.
{define:{freezeTableName:true}}
Puis sequelize pas ajoute " s " de caractère après le nom de la table.
OriginalL'auteur Minkyu Kim
Si la réponse fonctionne très bien, j'ai aujourd'hui recommandons l'utilisation de la
tableName
option lors de la déclaration du modèle:http://docs.sequelizejs.com/manual/tutorial/models-definition.html
Vous pouvez mettre à jour le lien vers la documentation.
OriginalL'auteur sdepold
Sequelize utilise par défaut le pluriel du passé de nom de modèle. Donc, il va chercher la table "node_tests" ou "NodeTests". Aussi, il peut créer la table pour vous si vous le voulez.
Sync va tenter de créer la table si elle n'existe pas déjà. Vous pouvez également supprimer la table existante et en créer un nouveau à partir de zéro en utilisant
sync({ force: true })
. Vérifier les commandes SQL sur votre ligne de commande pour plus de détails sur ce qui se passe.vous êtes les bienvenus. laissez-moi savoir si vous avez besoin de plus amples informations.
juste un côté pas:
dresende/node-orm2
module m'a donné la mêmeError: ER_NO_SUCH_TABLE
... vous avez besoin d'appelersync()
pour la première fois, avant d'ajouter des données.OriginalL'auteur sdepold
Lorsque vous définissez un modèle à un existant table, vous devez définir deux options pour sequelize:
Simplement ajouter deux options:
Note le options paramètre:
Manquant, soit des options de déclencheurs respectifs des erreurs lors de l'utilisation de sequelize des méthodes telles que nodeTest.findAll().
Alternativement, vous pouvez:
Voici la sequelize la documentation pour l'option configurations.
OriginalL'auteur Pageii Studio