1. ホーム
  2. javascript

[解決済み] カラム 'id' のないテーブルを再実行する

2023-01-29 11:38:12

質問

以下のようなテーブルの定義があります。

AcademyModule = sequelize.define('academy_module', {
        academy_id: DataTypes.INTEGER,
        module_id: DataTypes.INTEGER,
        module_module_type_id: DataTypes.INTEGER,
        sort_number: DataTypes.INTEGER,
        requirements_id: DataTypes.INTEGER
    }, {
        freezeTableName: true
});

見ての通り id カラムはありません。しかし、挿入しようとすると、まだ次のSQLが試行されます。

 INSERT INTO `academy_module` (`id`,`academy_id`,`module_id`,`sort_number`) VALUES (DEFAULT,'3',5,1);

を無効にするにはどうすればよいのでしょうか? id 機能を無効にするにはどうしたらよいでしょうか?

どのように解決するのですか?

を定義していない場合 primaryKey を定義しない場合、sequelize は id をデフォルトで使用します。

自分で設定したい場合は、単に primaryKey: true を使ってください。

AcademyModule = sequelize.define('academy_module', {
    academy_id: {
        type: DataTypes.INTEGER,
        primaryKey: true
    },
    module_id: DataTypes.INTEGER,
    module_module_type_id: DataTypes.INTEGER,
    sort_number: DataTypes.INTEGER,
    requirements_id: DataTypes.INTEGER
}, {
    freezeTableName: true
});