Импорт эмулятора хранилища данных GCP не работает - PullRequest
0 голосов
/ 11 октября 2019

При попытке импорта в эмулятор Datastore все данные импортируются корректно, но ссылки на ключи как-то неверны.

Процедура импорта, которую я выполняю, - это процедура из здесь после экспорта из инструкций здесь .

Я включил снимок экрана ситуации из средства просмотра хранилища данных, так как в противном случае это трудно понять.

Похожекак будто ссылки на клавиши (синяя стрелка) содержат правильный вид и идентификатор, поскольку средство просмотра хранилища данных вытаскивает их (оранжевая стрелка), и они правильные, но сущность, на которую она ссылается, имеет другой основной ключ сущности (например, красная стрелка, хотя, очевидно,для другой сущности), которые все имеют слегка другой формат (они имеют общий префикс и два дефиса в них).

Кажется, что кодирование клавиш выполняется в эмуляторе слегка противоречивым способом по сравнению св живом хранилище данных, но я нигде не смог найти никакой документации об этом.

Выполнение кода и подключение к эмулятору с помощью клиентской библиотеки показывает, что все ссылки также имеют правильные идентификаторы (я даже не уверен, что вы можете видеть строковые ключи с помощью клиента Ruby). Попытка использовать клиент для сброса ссылок путем установки того же идентификатора и сохранения для надежной регенерации ключей также не сработала.

enter image description here

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Я предполагаю, что ваше приложение работает нормально, но вы просто обеспокоены кодировками. Если это так, то не о чем беспокоиться.

Кажется, что кодирование клавиш выполняется в эмуляторе несколько тонко, а не в живом хранилище данных, но я не смог найтилюбая документация об этом где угодно.

Способ кодирования ключей в какой-то момент изменился. Я считаю, что средство просмотра хранилища данных, которое поставляется с SDK, все еще использует старый стиль. API был даже улучшен для поддержки декодирования из старого стиля, вы можете обратиться к

https://github.com/googleapis/google-cloud-python/issues/3293

, чтобы получить более подробную информацию. Я обнаружил, что новая кодировка более компактна, чем старая кодировка. Я полагаю, что новая кодировка не включает идентификатор приложения / проекта в кодировку, что имеет смысл, поскольку эта информация принадлежит всей базе данных, а не каждому конкретному ключу.

0 голосов
/ 18 октября 2019

есть открытая проблема относительно этой ошибки, с которой вы столкнулись. Вы можете следить за ходом этой проблемы здесь .

Кажется, это ошибка, которая должна быть исправлена ​​инженерами Google.

...