【问题标题】:Adonis migration to drop unique constraintAdonis 迁移以删除唯一约束
【发布时间】:2022-01-14 15:30:42
【问题描述】:

我正在做一个 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 迁移脚本更改表架构以删除约束?

【问题讨论】:

    标签: adonis.js


    【解决方案1】:

    您需要删除 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
    

    【讨论】:

    • 顺便说一句,当您在使用 adonis 迁移时遇到问题时,请记住,adonis 在后台使用 knexjs。因此,通过谷歌搜索如何使用 knexjs 进行操作来寻找答案。
    猜你喜欢
    • 2018-08-05
    • 2022-01-23
    • 2011-08-06
    • 2018-09-23
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多