当前位置: 首页 > 知识库问答 >
问题:

Knex迁移不起作用,怎么了?

郎成弘
2023-03-14

我似乎无法用knex迁移数据库。在up命令中,它失败。

knex.migrate.latest({}).finally(function () {
  knex.destroy()
})

我得到一个错误。

Possibly unhandled TypeError: undefined is not a function
    at SchemaBuilder_PG.Target.then (cwd/node_modules/knex/lib/interface.js:25:10)
    at SchemaBuilder_PG.Target.(anonymous function) [as bind] (cwd/node_modules/knex/lib/interface.js:71:21)
    at Migrator_PG.<anonymous> (cwd/node_modules/knex/lib/migrate/index.js:93:6)
    at Migrator_PG.<anonymous> (cwd/node_modules/knex/lib/migrate/index.js:138:15)
    at Migrator_PG.Migrator._migrationData (cwd/node_modules/knex/lib/migrate/index.js:154:10)
    at Migrator_PG.<anonymous> (cwd/node_modules/knex/lib/migrate/index.js:22:15)
From previous event:
    at Function.Promise$All [as all] (cwd/node_modules/knex/node_modules/bluebird/js/main/promise.js:198:12)
    at Migrator_PG.Migrator._migrationData (cwd/node_modules/knex/lib/migrate/index.js:152:18)
    at Migrator_PG.<anonymous> (cwd/node_modules/knex/lib/migrate/index.js:22:15)

我发誓它昨天还在工作。我试着删除并重建数据库。运气不好。怎么了?我该如何解决这个问题?

在knex消息源中似乎没有任何明显的挖掘。

共有1个答案

施玉宸
2023-03-14

算了,我太傻了。试图在配置中使用未设置的环境变量。

var knex = require('knex')

var config = {
  client: 'pg',
  connection: process.env.DATABASE_URL,
}

module.exports = knex(config)

现在工作。

 类似资料:
  • 我的应用程序(Postgres)中有7个不同的模式,我做了两次迁移来更改列,一次影响A模式,另一次影响公共模式。我想知道这种意外行为的原因。

  • 如果运行,它会失败 未找到基表或视图:1146表*.迁移不存在。 数据库是空的。 如果我运行我会看到迁移表,但它是空的。 DB显示迁移表,但它是空的。 如果我再次运行,数据库再次为空,我会得到相同的错误: 未找到基表或视图:1146表*.迁移不存在。 也许有人知道这里发生了什么。

  • 我不确定似乎是什么问题,但这种膝盖迁移失败了。尽管我是编写迁移的新手,但我坚信此迁移文件是正确的。生成的错误如下 代码如下。最初,这些迁移函数在单独的文件中,我认为它失败了,因为文件没有同步执行,这导致我编写了一个文件。我不确定这是否有帮助,但是当我删除包含外键引用(UserRoles、RolePer的、令牌)的表的代码时,其余的似乎都在工作。

  • 我是laravel的新手,我正在探索如何进行迁移。我创建了一个新的用户表,当我运行时,它会给我。我运行了然后运行了,但没有任何乐趣。我如下所示配置了我的。env文件: db_connection=mysql db_host=127.0.0.1 db_password=secret

  • 我想将我的项目迁移到空安全,但是dependecie不支持空安全:

  • 如果抛出的结果不是25头25尾(即24-26比),它应该擦除包含结果的列表的内容,并再次循环50抛出,直到结果正好是25-25。 打印空列表。 启动while-loop,只有在my_list.count(1)为25时才结束。 使用随机(1,2)掷硬币。 将结果输入my_list。 如果my_list.count(1)不完全是25,那么代码应该擦除列表的内容并重复while循环。 --编码:拉丁语-