Adonis 迁移以删除唯一约束

Adonis migration to drop unique constraint

我正在做一个 Adonis JS 项目。我想做相当于 ALTER TABLE products DROP CONSTRAINT unique_col_id 的事情,其中​​ unique_col_id 负责 products.sku 是唯一的。

我在 AdonisJS 中尝试过 database/migrations/filename.js:

'use strict'

/** @type {import('@adonisjs/lucid/src/Schema')} */
const Schema = use('Schema')

class ProductsAlterUniqueSkuSchema extends Schema {
  up () {
    this.alter('products', (table) => {
      // alter table
      table.integer('sku').unique(false);
    })
  }

  down () {
    this.table('products', (table) => {
      // reverse alternations
    })
  }
}

module.exports = ProductsAlterUniqueSkuSchema

但是我收到错误 Error: Duplicate column name 'sku'。我如何告诉 AdonisJS 迁移脚本更改 table 模式以删除约束?

你需要放弃 uniqueIndex。您不能使用 .alter().

更改它

因此,对于您的解决方案,代码如下:

'use strict'

/** @type {import('@adonisjs/lucid/src/Schema')} */
const Schema = use('Schema')

class ProductsAlterUniqueSkuSchema extends Schema {
    up () {
        this.alter('products', (table) => {
            // alter table
            table.dropUnique('sku')
        })
    }

    down () {
        this.table('products', (table) => {
            // reverse alternations (check your first migration, and just repeat)
            table.integer('sku').unique()
        })
    }
}

module.exports = ProductsAlterUniqueSkuSchema