2016-10-22 16 views
1

(ソースコントロールを使用して)OrientDBでスキーマを管理する方法を調べています。 OrientDBの "bin/console.sh"を介してクラスと関数を作成するためのSQLスクリプトがあります。私のスクリプトは、CREATE...ステートメントがもう一度失敗するため、新しいデータベースを作成するためにのみ機能します。変更が加えられたときにスクリプトを再実行できるようにしたいと思います。では、条件付きでCREATE CLASSCREATE PROPERTYのようなものをどのように行うことができますか?OrientDBでは、データベーススキーマの作成/更新SQLスクリプトの作成方法は?

はこれまでのところ、私は、このような文をスキップするIFを使用してみましたが、IFscript sql...endブロック内許可され、あなたがそのようなブロック内の任意のCREATE...文を入れしようとすると、エラーが発生します:「スキーマを変更することはできませんトランザクションはアクティブです。私たちが考え出したのは、set ignoreErrors trueを使用することですが、それでもエラーはスローされるので理想とはほど遠いため、実際の問題と予想されるエラーを区別することは非常に困難になります。

私は間違った質問をしています(つまり、SQLスクリプト以外のスキーマのソース管理を管理する方が良い方法です)。

+2

Java APIで管理できます。参照:http://orientdb.com/docs/last/Schema.html –

+1

私は通常2つのファイルを持っています。最初のものにはスキーマ全体が含まれています(システムを最初からインストールするときに実行します)。また、私が部分的な更新を実行するために使用する2番目のもの(例えば、クラスの属性を変更するか、それをインデックスする) – AVK

答えて

0

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]; 

この機能はofficial documentationで見つけることができます。

関連する問題