如何在AdonisJS迁移中捕获SQL错误

时间:2019-02-10 06:37:04

标签: sql bash migration adonis.js

我刚刚开始使用adonisJS,并且已经搜索了一段时间,但是没有找到答案的运气。我想知道我是否可以在这里获得任何帮助。

命令adonis migrate:refresh始终返回代码0,无论是否遇到SQL错误。我想知道除了测试输出中是否有“ Error”一词以外,是否还有其他方法可以捕获此错误?

以下是一些背景信息: 我有一个脚本,可以在服务器上自动同时运行数据库migrate:refreshseeding。但是有时,如果有人手动修改了我的数据库架构(例如删除了一个表),则migration:refresh会遇到SQL错误并回滚所有操作。但是由于我无法检测到这一点(迁移:refresh退出,代码为0),因此脚本的种子部分仍将运行,这将导致数据库中的种子重复。

我有一个示例bash脚本来检测SQL错误,但是我认为这不是一个好的解决方案。我想知道在迁移过程中是否有检测到SQL错误的好方法?

这是我的示例脚本

#/usr/bin/env bash

adonis migration:refresh | grep 'Error'

if [ $? -eq 1 ]
then 
    echo "Success, can start seeding"
else
    echo "Failed, do not run seeding"
fi

我还通过修改示例样板中的一个迁移文件,设置了一个repo来重现迁移SQL错误。要使用它,只需将其克隆,将“ .env.example”文件重命名为“ .env”,然后运行以下命令:

npm install
adonis migration:run
adonis migration:refresh

TL; DR:在脚本中使用命令adonis migration:refresh而不是“ grep”命令输出中的“错误”一词时,检测SQL错误的任何好方法吗?

0 个答案:

没有答案