gpt4 book ai didi

mysql - 插入时出错

转载 作者:行者123 更新时间:2023-12-03 22:21:19 24 4
gpt4 key购买 nike

我正在执行这个:

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 和 sequelize 的新手。这部分代码仅用于我的学习目的。有什么建议吗?

最佳答案

看起来您的操作顺序是:

  • 删除表。
  • 插入到表中。
  • 创建表。

  • 颠倒步骤 2 和 3 的顺序。

    如果这是异步代码,您可能需要在尝试插入之前等待创建表步骤完成。不要让它们以任意顺序运行。

    Sequelize 是 Promise 驱动的,所以这通常就像 awaitthen() 链一样简单,例如:
    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 返回一个 Promise ,这意味着如果您不小心,它可能会乱序运行。

    关于mysql - 插入时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61788079/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com