Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OrientDB中,如何编写数据库模式创建/更新SQL脚本?_Orientdb - Fatal编程技术网

在OrientDB中,如何编写数据库模式创建/更新SQL脚本?

在OrientDB中,如何编写数据库模式创建/更新SQL脚本?,orientdb,Orientdb,我正在研究如何在OrientDB中管理模式(使用源代码管理)。我有一个可以运行的SQL脚本,可以通过OrientDB的“bin/console.sh”来创建类和函数。我的脚本只适用于创建新数据库,因为CREATE…语句第二次将失败。我希望能够在进行更改时重新运行脚本。那么,我们如何有条件地执行创建类或创建属性 到目前为止,我尝试使用IF跳过此类语句,但是IF仅允许在script sql…end块中使用,如果您尝试将任何CREATE…语句放在此类块中,则会出现错误:“事务处于活动状态时无法更改架构

我正在研究如何在OrientDB中管理模式(使用源代码管理)。我有一个可以运行的SQL脚本,可以通过OrientDB的“bin/console.sh”来创建类和函数。我的脚本只适用于创建新数据库,因为
CREATE…
语句第二次将失败。我希望能够在进行更改时重新运行脚本。那么,我们如何有条件地执行
创建类
创建属性

到目前为止,我尝试使用
IF
跳过此类语句,但是
IF
仅允许在
script sql…end
块中使用,如果您尝试将任何
CREATE…
语句放在此类块中,则会出现错误:“事务处于活动状态时无法更改架构。”我们唯一能想到的是使用
将ignoreErrors设置为true
,但这远远不够理想,因为错误仍然会抛出,因此很难区分预期错误和实际问题


如果我问了一个错误的问题(也就是说,除了SQL脚本之外,还有一种更好的方式来管理模式的源代码管理),请告诉我。

在OrientDB v2.2.13中,有一个新的“If EXISTS”子句允许您使用相同的脚本优雅地创建或更新数据库。它是CREATE和DROP语句的一部分:

CREATE CLASS <class> [IF NOT EXISTS] ...;
CREATE PROPERTY <class>.<property> [IF NOT EXISTS] ...;
DROP CLASS <class> [IF EXISTS];
DROP PROPERTY <class>.<property> [IF EXISTS];
创建类[如果不存在]。。。;
创建属性。[如果不存在]。。。;
删除类[如果存在];
删除属性。[如果存在];

此功能可以在OrientDB v2.2.13中找到。

中有一个新的“IF EXISTS”子句,允许您使用相同的脚本优雅地创建或更新数据库。它是CREATE和DROP语句的一部分:

CREATE CLASS <class> [IF NOT EXISTS] ...;
CREATE PROPERTY <class>.<property> [IF NOT EXISTS] ...;
DROP CLASS <class> [IF EXISTS];
DROP PROPERTY <class>.<property> [IF EXISTS];
创建类[如果不存在]。。。;
创建属性。[如果不存在]。。。;
删除类[如果存在];
删除属性。[如果存在];

此功能可以在中找到。

您可以尝试使用Java API管理它。请看:我通常有2个文件。第一个包含整个模式(因此在从头开始安装系统时运行它)。第二个是我用来运行部分更新的(例如,更改类的属性或索引),您可以尝试使用JavaAPI来管理它。请看:我通常有2个文件。第一个包含整个模式(因此在从头开始安装系统时运行它)。第二个用于运行部分更新(例如,更改类的属性或为其编制索引)