在迁移到OrientDB之后,为什么Teleporter不能从Postgresql数据库生成顶点/边缘?

时间:2019-05-10 15:35:53

标签: postgresql orientdb ubuntu-18.04

我有一个postgres数据库,我想在Ubuntu 18中使用teleporter迁移到orientdb。运行迁移(无任何错误)后,尚未在orientDB数据库目录中生成数据库。

我的OrientDB服务器正在运行。我按照文档中描述的步骤进行操作:https://github.com/orientechnologies/orientdb-docs/blob/master/Teleporter-Import-Configuration.md和postgres数据库所需的teleporter命令:https://orientdb.com/integration/teleporter/orientdb-teleporter-making-migrations-easier-part-2/我也找到了这个答案:https://stackoverflow.com/a/36942774/6796652,而这正是我使用的命令:< / p>

sudo ./oteleporter.sh -jdriver postgresql -jurl jdbc:postgresql://localhost:5432/myPostgresDB -juser myPostgresPassword -jpasswd postgresql -ourl plocal:localhost/databases/myOrientDB root myOrientDBpassword

First Teleporter Migration

在结果中,它断定已经检测到了postgres数据库的所有表,但我在OrientDB目录(/ opt / orientdb / databases /)内找不到postgres数据库的任何顶点或边缘

我在OrientDb studio中检查了顶点:

select * from V

但是我看不到postgres数据库的顶点。

我关闭了我的电脑,然后再次尝试迁移(即使使用另一个Postgres数据库),但现在我收到此错误:

ERROR: Synchronization not allowed in OrientDB CE. Execution will be terminated.Exception in thread "main" com.orientechnologies.teleporter.exception.OTeleporterRuntimeException: Synchronization not allowed in OrientDB CE. Execution will be terminated.
    at com.orientechnologies.teleporter.main.OTeleporter.executeJob(OTeleporter.java:350)
    at com.orientechnologies.teleporter.main.OTeleporter.execute(OTeleporter.java:260)
    at com.orientechnologies.teleporter.main.OTeleporter.main(OTeleporter.java:220)

我没有通过谷歌搜索找到错误。我也在另一台装有Ubuntu 16的电脑上尝试过,结果如下:

(1/4) Source DB Schema building:      0% [                    ]  Elapsed: 00:00:00  Remaining: 00:00:00  W(1/4) Source DB Schema building:    100% [....................]  Elapsed: 00:00:00  Remaining: 00:00:00  Warnings: 0
(2/4) Graph Model building:         100% [....................]  Elapsed: 00:00:00  Remaining: 00:00:00  Warnings: 1

2019-05-10 00:35:52:234 WARNI Can not allocate space (error 22) for file /opt/orientdb/bin/localhost/databases/demodb/config_2.cd using native Linux API, more slower methods will be used [OFileClassic] 

(3/4) OrientDB Schema writing:        0% [                    ]  Elapsed: 00:00:01  Remaining: 00:00:00  Warnings: 1

(4/4) OrientDB importing:             0% [                    ]  Elapsed: 00:00:00  Remaining: 00:00:00  Warnings: 1  Records: 0/0

Importing complete in 00:00:15

SUMMARY

Source DB Schema
Entities: 3
Relationships: 2

OrientDB Schema
Vertex Type: 2
Edge Type: 1
Indexes: 2

OrientDB Importing
Analyzed Records: 0/0
Added Vertices on OrientDB: 0
Updated Vertices on OrientDB: 0
Added Edges on OrientDB: 0

我在此处检查了警告:https://github.com/orientechnologies/orientdb/issues/8431,但作为第一个迁移,Teleporter appaers并未产生任何新的顶点或边。

我没有使用任何配置文件,就像文档中所说的那样,运行Teleporter之后,应该在OriendDB目录中生成新的顶点和边文件吗?

“在以下执行中,将自动处理数据库中的新配置,使其一致并简化同步过程。如果要更改任何设置,可以直接修改文件。实际上,Teleporter在执行时,依次查找:

  • 数据库目录$ ORIENDB_HOME / databases / testdb / teleporter-config /
  • 中的配置文件migration-config.json
  • 如果未找到配置文件,则可能的输入配置为 考虑过
  • 如果未将配置文件作为参数传递,则将在不进行任何配置的情况下执行迁移。”

我正在使用OrientDB 3.0.18版本。

那我做错了吗?

任何帮助将不胜感激。

修改

我尝试创建一个新的orientdb数据库并再次进行迁移,第一次尝试就没问题,如果再次运行迁移,它将显示消息ERROR: Synchronization not allowed in OrientDB CE,在official site中搜索发现Live Synchronization仅适用于OrientDB Enterprise Edition,因此如果OrientDB“检测” /opt/orientdb/databases/目录中已经有数据库文件夹的数据库,则显示该错误是有意义的。问题是,传送器不会迁移命令结果显示的顶点或边缘,如果我执行select * from Vselect * from E,则会得到0 item(s) found控制台或Orientdb Studio。

Edit2 我尝试使用具有两个关系表的数据库(在第一次尝试中,我有没有关系的表,因此我认为不需要在configuration json命令中使用configuration.json文件作为参数。

这是我的新的migration-config.json文件,存储在/tmp/migration-config.json中,如文档所述:

{
    "edges": [{
        "Hire": {
            "mapping": {
                "fromTable": "COMPANY",
                "fromColumns": ["user_id"],
                "toTable": "USERS",
                "toColumns": ["id"],
                "direction": "direct"
            },
            "properties": {
                "updatedOn": {
                    "type": "DATE",
                    "mandatory": true,
                    "readOnly": false,
                    "notNull": false
                }
            }
        }
    }],
    "vertices": [{}]
}

我需要放"vertices": [{}],因为出现此错误ERROR: Configuration error: 'vertices' field not found.Exception in thread "main" com.orientechnologies.teleporter.exception.OTeleporterRuntimeException

因此添加"vertices": [{}]会出现此错误:

ERROR: Configuration error: 'name' field not found in vertex class definition.Exception in thread "main" com.orientechnologies.teleporter.exception.OTeleporterRuntimeException

这没有意义,这些是我的postgres表:

CREATE TABLE public.company
(
  id integer NOT NULL DEFAULT nextval('company_id_seq'::regclass),
  name character varying(500),
  user_id integer,
  created_at timestamp with time zone NOT NULL,
  CONSTRAINT company_pkey PRIMARY KEY (id),
  CONSTRAINT company_users FOREIGN KEY (user_id)
      REFERENCES public.users (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE RESTRICT
)

任何帮助将不胜感激

0 个答案:

没有答案