bcc-code / directus-schema-sync

The better way to sync your Directus schema and data between environments
Apache License 2.0
90 stars 4 forks source link

Error to import sync data #26

Closed lucastoneatto closed 4 months ago

lucastoneatto commented 4 months ago

Describe the Bug

When I try to run the import command, the following error appears I have a digital ocean droplet (ubuntu) when directus deployed by docker-compose.yml file The import-schemacommand works.

/directus $ npx directus schema-sync import
[13:50:35.414] INFO: Loaded extensions: directus-extension-schema-sync
[13:50:35.423] INFO: Importing everything from: /directus/schema-sync/data
[13:50:35.759] ERROR: Failed loading "directus_folders".
[13:50:35.760] ERROR: Failed loading "directus_roles".
[13:50:35.760] ERROR: Failed loading "schema".
[13:50:35.760] ERROR: Invalid foreign key for field "parent" in collection "directus_folders".
    err: {
      "type": "",
      "message": "Invalid foreign key for field \"parent\" in collection \"directus_folders\".",
      "stack":
          DirectusError: Invalid foreign key for field "parent" in collection "directus_folders".
              at foreignKeyViolation (file:///directus/node_modules/.pnpm/file+api_@unhead+vue@1.8.10_pinia@2.1.7_typescript@5.3.3_vue@3.4.15/node_modules/@directus/api/dist/database/errors/dialects/postgres.js:87:12)
              at extractError (file:///directus/node_modules/.pnpm/file+api_@unhead+vue@1.8.10_pinia@2.1.7_typescript@5.3.3_vue@3.4.15/node_modules/@directus/api/dist/database/errors/dialects/postgres.js:21:20)
              at translateDatabaseError (file:///directus/node_modules/.pnpm/file+api_@unhead+vue@1.8.10_pinia@2.1.7_typescript@5.3.3_vue@3.4.15/node_modules/@directus/api/dist/database/errors/translate.js:26:28)
              at file:///directus/node_modules/.pnpm/file+api_@unhead+vue@1.8.10_pinia@2.1.7_typescript@5.3.3_vue@3.4.15/node_modules/@directus/api/dist/services/items.js:152:29
              at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
      "name": "DirectusError",
      "extensions": {
        "collection": "directus_folders",
        "field": "parent"
      },
      "code": "INVALID_FOREIGN_KEY",
      "status": 400
    }

To Reproduce

I have a DO droplet with this guide (https://docs.directus.io/blog/deploy-directus-ubuntu-server.html)

Version

10.9.0

Installed Extension Via

Docker file

lucastoneatto commented 4 months ago

Sorry, the problem was that the order of items on json file was wrong But the export command always export the data in the same order. I have to exclude this file from commit, but it's not comfortable

u12206050 commented 4 months ago

Hey, this sounds like the perfect scenario for using linkedFields. Add this to the directus config within the directus_folders part:

{
  directus_folders: {
    watch: ['folders'],
    linkedFields: ['parent'],
    …
  },
}

This tries to order imports based on the relationships defined on the parent field within the same collection