入时出现错误"/>
插入时出现错误
我正在执行此:
const Seq = require(`sequelize`);
const seq = new Seq(`sistemadecadastro`, `root`, `Dev01891`, {
host: `localhost`,
dialect: `mysql`,
});
seq
.authenticate()
.then(function () {
console.log(`Conectado ao MySQL com sucesso!`);
})
.catch(function (erro) {
console.log(`Erro na conexao com MySQL: ` + erro);
});
const postagem = seq.define(`postagens`, {
titulo: {
type: Seq.STRING,
},
conteudo: {
type: Seq.TEXT,
},
});
postagem.sync({ force: true });
postagem.create({
titulo: `AVISO`,
conteudo: `Four values - border-radius: 15px 50px 30px 5px; (first value applies to to`,
});
但是我无法添加新记录,因为INSERT正在'sequelize创建表之前发生。
控制台输出:
PS C:\Projects\TestNodeMySql> node testMySQL.js
Executing (default): SELECT 1+1 AS result
Executing (default): DROP TABLE IF EXISTS `postagens`;
Executing (default): INSERT INTO `postagens` (`id`,`titulo`,`conteudo`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?);
Conectado ao MySQL com sucesso!
Executing (default): CREATE TABLE IF NOT EXISTS `postagens` (`id` INTEGER NOT NULL auto_increment , `titulo` VARCHAR(255), `conteudo` TEXT, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Unhandled rejection SequelizeDatabaseError: Table 'sistemadecadastro.postagens' doesn't exist
at Query.formatError (C:\Projects\TestNodeMySql\node_modules\sequelize\lib\dialects\mysql\query.js:244:16)
at handler (C:\Projects\TestNodeMySql\node_modules\sequelize\lib\dialects\mysql\query.js:51:23)
at Prepare.onResult (C:\Projects\TestNodeMySql\node_modules\mysql2\lib\connection.js:604:11)
at Prepare.execute (C:\Projects\TestNodeMySql\node_modules\mysql2\lib\commands\command.js:30:14)
at Connection.handlePacket (C:\Projects\TestNodeMySql\node_modules\mysql2\lib\connection.js:417:32)
at PacketParser.onPacket (C:\Projects\TestNodeMySql\node_modules\mysql2\lib\connection.js:75:12)
at PacketParser.executeStart (C:\Projects\TestNodeMySql\node_modules\mysql2\lib\packet_parser.js:75:16)
at Socket.<anonymous> (C:\Projects\TestNodeMySql\node_modules\mysql2\lib\connection.js:82:25)
at Socket.emit (events.js:321:20)
at addChunk (_stream_readable.js:294:12)
at readableAddChunk (_stream_readable.js:275:11)
at Socket.Readable.push (_stream_readable.js:209:10)
at TCP.onStreamRead (internal/stream_base_commons.js:186:23)
Executing (default): SHOW INDEX FROM `postagens`
我是node.js的新手,并进行了续集。这部分代码仅用于我的学习目的。有什么建议吗?
回答如下:看起来您的操作顺序是:
- 删除表。
- 插入表格。
- 创建表。
颠倒步骤2和3的顺序。
如果这是异步代码,您可能需要等待创建表的步骤完成才能尝试插入。不要让它们以任意顺序运行。
Sequelize是由Promise驱动的,因此它通常与await
或then()
链一样简单,例如:
await postagem.sync({ force: true });
postagem.create({
titulo: `AVISO`,
conteudo: `Four values - border-radius: 15px 50px 30px 5px; (first value applies to to`,
});
这在某种async
函数中。请注意,sync
返回一个sync
,这意味着如果您不小心,它可能会乱序运行。
更多推荐
插入时出现错误
发布评论