我刚刚开始使用adonisJS,并且已经搜索了一段时间,但是没有找到答案的运气。我想知道我是否可以在这里获得任何帮助。
命令adonis migrate:refresh
始终返回代码0,无论是否遇到SQL错误。我想知道除了测试输出中是否有“ Error”一词以外,是否还有其他方法可以捕获此错误?
以下是一些背景信息:
我有一个脚本,可以在服务器上自动同时运行数据库migrate:refresh
和seeding
。但是有时,如果有人手动修改了我的数据库架构(例如删除了一个表),则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错误的任何好方法吗?