Почему Teleporter не генерирует вершины / ребра из базы данных postgresql после перехода на OrientDB? - PullRequest
0 голосов
/ 10 мая 2019

У меня есть база данных 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

First Teleporter Migration

В результате обнаруживается, что были обнаружены ровно все таблицы базы данных 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
)

Любая помощьбудет оценен

...