3

我们最近安装了一个专门用于单元测试的服务器,它在提交完成时通过 Jenkins 自动部署更新,并在发现回归时发送邮件
>这要求我们的数据库始终是最新的

由于 database-schema-reference 是我们的 MWB,我们在部署期间添加了一些脚本,将 .mwb 导出到 .sql(使用 python)这工作得很好......但仍然有一些问题

我们主要担心的是附加到模式的函数根本没有导出,这使得数据库无法使用。

我们想破解 python 代码以使其导出脚本......但没有找到足够的信息。这是我们找到的唯一一份文档。这对我们来说不是很清楚。我们没有找到任何有关导出脚本的信息。
我们只发现存在一个 db_Script 类。我们不知道在执行上下文中哪里可以找到它的实例,也不知道它们是否可以轻松导出。我们错过了什么吗?

作为参考,这里是我们目前用于 mwb 到 sql 转换的脚本 (mwb2sql.sh)。
它从命令行调用 MySqlWorkbench(我们使用一个虚拟的 x-server 来刷新图形输出。)
我们需要完成的是在工作台的命令行调用中传递的 python 部分。

# generate sql from mwb
# usage: sh mwb2sql.sh {mwb file} {output file}
# prepare: set env MYSQL_WORKBENCH

if [ "$MYSQL_WORKBENCH" = "" ]; then
  export MYSQL_WORKBENCH="/usr/bin/mysql-workbench"
fi

export INPUT=$(cd $(dirname $1);pwd)/$(basename $1)
export OUTPUT=$(cd $(dirname $2);pwd)/$(basename $2)

"$MYSQL_WORKBENCH" \
  --open $INPUT \
  --run-python "
import os
import grt
from grt.modules import DbMySQLFE as fe
c = grt.root.wb.doc.physicalModels[0].catalog
fe.generateSQLCreateStatements(c, c.version, {})
fe.createScriptForCatalogObjects(os.getenv('OUTPUT'), c, {})" \
  --quit-when-done
set -e
4

0 回答 0