mysql sequelize does not create a table显示以下结果:“正在执行(默认):SELECT 1+1 AS result”

ljsrvy3e  于 2023-04-29  发布在  Mysql
关注(0)|答案(8)|浏览(182)

我尝试使用sequelize创建一个表,它很好,没有错误,但不是创建一个表,而是显示这个消息作为结果

Executing (default): SELECT 1+1 AS result

这里是我配置文件:

const Sequelize = require('sequelize');

const sequelize = new Sequelize('*******', '******', '*******', {
    dialect: 'mysql',
    host: 'localhost',
});

module.exports = sequelize;

我的用户。js文件:

const Sequelize = require('sequelize');

const sequelize = require('../db/mysql/config');

const User = sequelize.define('user', {
    id: {
        type: Sequelize.INREGER,
        autoIncrement: true,
        allowNull: false,
        primaryKey: true
    },
    userName: {
        type: Sequelize.STRING,
        allowNull: false
    },
    email: {
        type: Sequelize.STRING,
        allowNull: false
    },
    password: {
        type: Sequelize.STRING,
        allowNull: false
    }

});

module.exports = User;

这是我的测试js文件我用node commit运行它:

const sequelize = require('./db/mysql/config')

sequelize
    .sync()
    .then(result => {
        console.log(result);
    })
    .catch(err => {
        console.log(err);
    })

如果我复制用户。配置文件中的js代码运行正常

798qvoo8

798qvoo81#

导入用户。配置中的js模型js一个例子:-

const User = require('enter your path here for user.js')

     User.sync();
7jmck4yq

7jmck4yq2#

正在导入用户。js文件测试。js解决了这个问题。
您需要以某种方式执行模型来创建表。您可以通过在程序执行流中要求您的模型文件来实现这一点。

2fjabf4q

2fjabf4q3#

因为您没有导出已创建的表。

  • 在您的文件中,您已创建用户。js,所以你必须导出它,并确保你正在命中(同步)那个表,要么你可以同步一个特定的表,要么你可以一次同步所有的表(模型)。

如何同步特定表(型号)?

  • 在根文件(启动应用程序)中,导入用户。js
    导入用户。js from('your path to the file ')
  • 现在写入**modelName。return();

如何一次命中(同步)所有表?
1.在你创建了所有的模型之后,你必须导出它
1.然后在根文件中,写以下内容

sequelize.sync()
flmtquvp

flmtquvp4#

我的解决方案流程:=〉之前检查数据库OWNER

1.将所有模型文件保存在/app/models
1.模型示例:

const {DataTypes, Model} = require('sequelize');

// on importe la connexion
const sequelize = require('./../database');

class User extends Model {
}

User.init({
        username: {
            type: DataTypes.STRING,
            allowNull: false
        },
        email: {
            type: DataTypes.STRING,
            allowNull: false,
            unique: true
        },
        password: {
            type: DataTypes.STRING,
            allowNull: false
        },
        roles: {
            type: DataTypes.JSON,
            defaultValue: {"roles":[{
                    "role_name":"ROLE_USER",
                }
            ]},
        },
        status: {
            type: DataTypes.BOOLEAN,
            defaultValue: false
        },
        birthday: {
            type: DataTypes.DATE,
            allowNull: false
        },
        filename: DataTypes.STRING,
        activation_token: DataTypes.STRING,

    },
    {
        underscored: true,
        sequelize, //connexion a l'instance
        timestamps: true,
        tableName: 'user'
    }
);

User.sync({ alter: true });
console.log("==> The table for the User model was just (re)created!");

module.exports = User;

1.为/app/database.js中的数据库连接创建专用文件

const {Sequelize} = require('sequelize');

const sequelize = new Sequelize(process.env.PG_URL, {});

module.exports = sequelize;

1.在目录/app/models内创建新文件index.js
1.在此文件中添加所需的所有模型,如下所示:

const User      = require('./user');
const Category  = require('./category');
    ...
module.exports = { User, Category };

1.在项目根目录上创建新文件,如下所示:init_models_db.js

const models = require('./app/models'); //By default load index.js inside /app/models
const sequelize = require('./app/database');

const init_BDD = async () => {
    try {
        await sequelize.authenticate();
        console.log('Connection has been established successfully.');
        const created =  sequelize.sync({force: true});

        if(created) {
            console.log("==> TABLE DONE !");
        }

    } catch (error) {
        console.error('Unable to connect to the database:', error);
    }
} 
init_BDD();

1.执行命令:node init_models_db.js

jaql4c8m

jaql4c8m5#

一旦你导入你的模型并要求它到你的控制器中,然后定义你的路由,最后把路由添加到索引中。js或者你的app的入口点,表会自动创建,而不需要要求模型直接进入你的入口点文件的意思;

  • yourModel.js [导出模型]
  • 您的控制器。js [需要您的模型]
  • yourRoutes.js [需要您的控制器]
  • index.js | app.js |main.js [require your router]
pn9klfpd

pn9klfpd6#

const Sequelize = require('sequelize');

const sequelize = new Sequelize('*******', '******', '*******', {
    dialect: 'mysql',
    host: 'localhost',
    logging: false

});

module.exports = sequelize;

您需要添加'logging: false'来解决问题

eimct9ow

eimct9ow7#

**简单修复:**转到控制器文件并示例化对象

const User = require('models/user');

一旦您为模型创建了一个示例,就会生成表。

omvjsjqw

omvjsjqw8#

const sequelize = require('./db/mysql/config')

sequelize
    .sync()
    .then(result => {
        console.log(result);
    })
    .catch(err => {
        console.log(err);
    })

应该改变路径

const sequelize = require('./models/user')

导入***用户。js***不是db-mysql-config。js

相关问题