У меня есть база данных postgres, которую я хочу перенести в orientdb с помощью teleporter в Ubuntu 18. После запуска миграции (без каких-либо ошибок) база данных не была сгенерирована в каталоге базы данных orientDB.
Iмой сервер OrientDB работает.Я выполняю шаги, описанные в документации: https://github.com/orientechnologies/orientdb-docs/blob/master/Teleporter-Import-Configuration.md с помощью команды teleporter, необходимой для баз данных postgres: https://orientdb.com/integration/teleporter/orientdb-teleporter-making-migrations-easier-part-2/ Также я нашел такой ответ: https://stackoverflow.com/a/36942774/6796652, и это именно та команда, которую яused:
sudo ./oteleporter.sh -jdriver postgresql -jurl jdbc:postgresql://localhost:5432/myPostgresDB -juser myPostgresPassword -jpasswd postgresql -ourl plocal:localhost/databases/myOrientDB root myOrientDBpassword
В результате обнаруживается, что были обнаружены ровно все таблицы базы данных postgres, но я не могу найти вершины или ребрабаза данных postgres внутри каталога OrientDB (/opt/orientdb/databases/).
Я проверил в студии OrientDb вершины:
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)
Я не нашел ошибку, прибегая к помощи Google,Кроме того, я попробовал на другом компьютере с 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,во время выполнения последовательно ищет:
- файл конфигурацииigration-config.json в каталоге базы данных $ ORIENDB_HOME / database / testdb / teleporter-config /
- , если файл конфигурации отсутствуетбудет найден, тогда потенциальная входная конфигурация будет считаться
- , если ни один файл конфигурации не пройденВ качестве аргумента, миграция будет выполняться без какой-либо конфигурации "
Я использую версию OrientDB 3.0.18.
Так что я делаю неправильно?
Любая помощь приветствуется.
Редактировать
Я попытался создать новую базу данных orientdb и выполнить миграцию снова, и все было в порядке с первой попытки, еслиЯ снова запускаю миграцию, она отображает сообщение ERROR: Synchronization not allowed in OrientDB CE
, поиск на официальном сайте Я обнаружил, что Live Synchronization доступна только для OrientDB Enterprise Edition, поэтому имеет смысл показать эту ошибку, если OrientDB "обнаружит"база данных, в которой уже есть папка базы данных в каталоге /opt/orientdb/databases/
.Проблема в том, что Teleporter не переносит вершины или ребра, отображаемые в результате команды, если я select * from V
или select * from E
получаю 0 item(s) found
либо консоль, либо Orientdb Studio.
Edit2 Я попытался использовать базу данных с двумя таблицами отношений (в первой попытке у меня была таблица без отношений, поэтому я полагаю, что не нужно использовать файл configuration.json в качестве параметра в команде teleporter.
Это мой новый файл миграции-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
)
Любая помощьбудет оценен