我们有多个测试环境,每个环境都包含自己的一组数据库。每个环境中的一个模式与我们的测试应用程序一起使用。我需要在所有环境中保持该架构的一致性。因此,我有一些应用程序允许我将更改从一个数据库移动到其余数据库。它工作顺利,直到一个DBA将所有新数据库中的数据类型从varchar(1)更改为char(1)。在初始设计期间我没有这么做,所以我不确定为什么在需要值的时候使用varchar(1)(尽管它是可以为空的,如果它没有值,其他代码可能会中断)。
当尝试同步新数据库时,我发现他们更改了类型,因为此错误仅在旧数据库和新数据库之间的传输中出现:ORA-01036:非法变量名称/编号。只要我不在同一个应用程序会话中执行它们,从旧到旧和新到新的数据传输都可以正常工作。我无法更新数据库,DBA拒绝更正此问题。我目前唯一的解决方案是忽略插入列,使用SQL执行更新,然后继续下一个项目。
如何让NHibernate在这些数据库之间正确移动数据?