我有一个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
在结果中,它断定已经检测到了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在执行时,依次查找:
我正在使用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 V
或select * 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
)
任何帮助将不胜感激