Seatable migration convert_links fails in batch_append_links with ConnectionError

Your Setup:

  • Hardware or environment you use : Seatable cloud and local machine
  • SeaTable Edition : Enterprise

Describe the Problem/Error/Question:

Please describe your issue as precise as possible. If helpful, you can also provide:

  • Commands you executed: Python migration script present in the doc
  • Description:
    • I managd to migrate 2 databases without any problem (just the manual colomns to update by hand)
    • When trying to migrate the third one, tables and columns are created and when links are being applied I get a ConnectionError for (table, column, other_table), for exemple this link fail:
      • (‘:laptop: Pre BE’, ‘:chart_increasing: Suivi Indus’, ‘:chart_increasing: Suivi Indus’)
      • (‘Donnees SA’, ‘Suivi SC’, ‘Suivi SC’)
      • (‘Phoning SA’, ‘Suivi SC’, ‘Suivi SC’)
    • The result is the same launching the script from seatable cloud environment and my local machine
    • Adding a try / except in the AirtableConvertor.convert_links function makes the script finish but I asume links for failed columns are not done

Question:

  • The column seems to have the data, but I do not know if there are side effects
  • Is it possible to create this links manually?

Error Messages:

If there are any error messages shown in the console, please include them for better readability by wrapping them in a code block.

[2025-05-06 16:31:41] [INFO] Added 10 links to table "Sites clients"
[2025-05-06 16:31:41] [INFO] Added 10 links to table "Sites clients"
[2025-05-06 16:31:41] [INFO] Added 10 links to table "Sites clients"
[2025-05-06 16:31:41] [INFO] Added 10 links to table "Sites clients"
[2025-05-06 16:31:41] [INFO] Added 1 links to table "Sites clients"
Traceback (most recent call last):
File "/scripts/index.py", line 86, in <module>
import_header()
File "/scripts/index.py", line 79, in import_header
convertor.convert_metadata()
File "/home/seatable/.local/lib/python3.11/site-packages/seatable_api/convert_airtable.py", line 534, in convert_metadata
self.convert_links(is_demo=True)
File "/home/seatable/.local/lib/python3.11/site-packages/seatable_api/convert_airtable.py", line 777, in convert_links
self.batch_append_links(table_name, links)
File "/home/seatable/.local/lib/python3.11/site-packages/seatable_api/convert_airtable.py", line 915, in batch_append_links
self.base.batch_update_links(
File "/home/seatable/.local/lib/python3.11/site-packages/seatable_api/main.py", line 26, in wrapper
return func(obj, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/seatable/.local/lib/python3.11/site-packages/seatable_api/main.py", line 33, in wrapper
return getattr(new_obj, func.__name__)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/seatable/.local/lib/python3.11/site-packages/seatable_api/api_gateway.py", line 495, in batch_update_links
return parse_response(response)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/seatable/.local/lib/python3.11/site-packages/seatable_api/utils.py", line 213, in parse_response
raise ConnectionError(response.status_code, response.text)
ConnectionError: [Errno 400] {"error_type":"no_valid_rows_exist","error_message":"No valid rows exist."}