【问题标题】:SequelizeDatabaseError: SQLITE_ERROR: no such table: UsersSequelizeDatabaseError:SQLITE_ERROR:没有这样的表:用户
【发布时间】:2020-03-01 19:08:32
【问题描述】:

我将 Sequelize 与 sqlite 一起使用,当我尝试向表中插入数据时出现错误

Executing (default): INSERT INTO `Users` (`id`,`username`,`password`,`createdAt`,`updatedAt`) 
VALUES (NULL,$1,$2,$3,$4);
{ SequelizeDatabaseError: SQLITE_ERROR: no such table: Users

我正在使用 sequelize-cli 进行迁移。

这是我的文件结构img

file structure

globalConfigs.js

const dotenv = require('dotenv');

dotenv.config({
    path: './config.env'
});

module.exports = {
    port: process.env.PORT || 9000,
    database: {
        dialect: 'sqlite',
        sotrage: './MVC/db/dbFiles/portfolioDB.sqlite'
    }

};

dbConnectorConfig.js

const globalConfigs = require('../globalConfigs/globalconfigs');
const Sequelize = require('sequelize');


const sequelize = new Sequelize(
    globalConfigs.database
);

module.exports = sequelize;

userModel.js

const Sequelize = require("sequelize");
const sequelize = require("../db/dbConnectorConfigs");

module.exports = sequelize.define("User", {
    id: {
        type: Sequelize.INTEGER(11),
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
    },
    username: {
        type: Sequelize.STRING(35),
        allowNull: false,
        unique: true
    },
    password: {
        type: Sequelize.STRING(20),
        allowNull: false
    }
});

running : sequelize migration:create --name user_table

我得到文件

'use strict';

module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('users', {
      id: {
        type: Sequelize.INTEGER(11),
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
      },
      username: {
        type: Sequelize.STRING(35),
        allowNull: false,
        unique: true
      },
      password: {
        type: Sequelize.STRING(20),
        allowNull: false
      },
      createdAt: Sequelize.DATE,
      updatedAt: Sequelize.DATE

    });
  },

  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('users');

  }
};

这是sequelize-cli生成的config.json文件

{
  "development": {
    "username": "root",
    "password": null,
    "host": "127.0.0.1",
    "dialect": "sqlite",
    "storage": "./db/dbFiles/portfolio.sqlite"

  },
  "test": {
    "username": "root",
    "password": null,
    "database": "database_test",
    "host": "127.0.0.1",
    "dialect": "mysql",
    "operatorsAliases": false
  },
  "production": {
    "username": "root",
    "password": null,
    "database": "database_production",
    "host": "127.0.0.1",
    "dialect": "mysql",
    "operatorsAliases": false
  }
}

这是用户模型创建用户的文件

authenticationController.js

const User = require("../models/userModel");

exports.createUser = async (req, res, next) => {
  
  const user_created = await User.create({
       username: "userteste",
        password: "password"
        });
  
};

【问题讨论】:

    标签: node.js sqlite sequelize.js sequelize-cli


    【解决方案1】:

    回答可能晚了,但我刚刚找到了解决方案

    这个问题发生在我身上,因为我对数据库进行了更改。

    所以你必须先删除表并重新创建它。

    sequelize
      .sync()
      .then(() => {
         //something here
      })
      .catch((e) => console.log(e));
    
    
    

    我们使用上面的代码来创建数据库 你只需要删除表格如下

    
    sequelize
      .sync()
      .then(() => {
         //something here
    return sequelize.drop();
      })
      .catch((e) => console.log(e));
    

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 2021-08-05
      • 2021-01-21
      • 2021-11-02
      • 2020-05-15
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      相关资源
      最近更新 更多