heroku 处理管理员UI请求时出错:错误:Prisma错误:表'main.User'在当前数据库中不存在

u91tlkcl  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(111)

我尝试将keystone应用程序部署到Heroku,我做到了,但当我尝试打开应用程序时,我得到了以下错误:处理管理员UI请求时出错:错误:Prisma错误:表main.User在当前数据库中不存在。以下是包含有关错误的更多详细信息的屏幕截图:

我试图找到数据库并创建用户表。我希望知道如何解决这个问题的步骤。

kulphzqa

kulphzqa1#

看起来您的数据库没有正确初始化。您包含的错误是无法计算User列表中的项目数,该列表(如果您没有配置会话)可能是要运行的第一个查询-每个列表中的项目数显示在登录页面的管理员UI上,因此这是它要做的第一件事。
因此,关于如何在生产环境中生成或应用迁移的某些内容设置不正确。大多数关于如何进行迁移的相关文档都在CLI guide中,具体请参见关于数据库迁移和db.useMigrations标志的部分。
如果你只是在开发中玩游戏,关闭db.useMigrations会很方便。Keystone会在启动时自动将你的DB结构同步到你的列表配置中定义的内容,并且不会创建任何物理迁移文件。如果你正在原型化一些更改或者只是在玩游戏,这可能是您想要的,但是-如果您要部署到某个地方-最好打开db.useMigrations。然后,如果Keystone在运行时检测到DB发生了更改,它将提示您创建一个迁移文件,如果需要的话,可以调整它以保护现有数据,在版本控制(例如,GIT)下跟踪并部署。
让这些迁移在Heroku这样的环境中运行有点奇怪,因为(假设你的应用启用了它)Heroku可以自动伸缩。另一方面,迁移需要运行一次。你也不能在应用的第一个示例启动时锁定DB并运行迁移--这会延迟HTTP服务器的启动,因此,如果迁移运行的时间太长,Heroku可能认为部署失败了。
我们建议解决这个问题的方法是在构建阶段运行迁移。12-factor app methodology的粉丝会注意到这违反了build and release stages的分离,但是,对于一个简单的Heroku部署来说,它工作得很好。对于更大/更重要的应用来说,创建和应用迁移通常是一个需要认真思考和关注的领域。所需的特定基础设施和部署过程将取决于项目。
如果你还没有看过Keystone 6 Heroku example codebase,我也建议你去看看。它有点过时了,但是它展示了迁移和package.json脚本的运行。

相关问题