superset icon indicating copy to clipboard operation
superset copied to clipboard

Exported MySQL Database Connection cannot be imported

Open OldrichDlouhy opened this issue 1 year ago • 1 comments

Bug description

Importing MySQL connection exported on different Superset instance fails on validation.

  1. On first instance, create MySQL connection
  2. On Advanced tab, edit the Chart Cache Timeout and set it to 3600
  3. Export the connection
  4. On second superset instance, add database and select "Import database from file"
  5. Select file exported in step 3

Expected result: Superset asks for user DB password and imports the connection

Actual results: Import error is shown in the "Connect a database" dialog

Workaround: Extract the connection yaml file from the exported zip file and comment out the timeouts. Repack the zip file and import it.

Original MySQL.yaml:

database_name: MySQL
sqlalchemy_uri: mysql+mysqldb://username:XXXXXXXXXX@cloud-sql-proxy:3306/eDigi
cache_timeout: 3600
expose_in_sqllab: true
allow_run_async: false
allow_ctas: false
allow_cvas: false
allow_dml: false
allow_file_upload: false
extra:
  allows_virtual_table_explore: true
  metadata_cache_timeout:
    schema_cache_timeout: ''
uuid: 130d3f07-d4bc-4e74-bf35-ca16a61666e0
version: 1.0.0

Fixed MySQL.yaml:

database_name: MySQL
sqlalchemy_uri: mysql+mysqldb://username:XXXXXXXXXX@cloud-sql-proxy:3306/eDigi
# cache_timeout: 3600
expose_in_sqllab: true
allow_run_async: false
allow_ctas: false
allow_cvas: false
allow_dml: false
allow_file_upload: false
extra:
  allows_virtual_table_explore: true
#  metadata_cache_timeout:
#    schema_cache_timeout: ''
uuid: 130d3f07-d4bc-4e74-bf35-ca16a61666e0
version: 1.0.0

Possibly related issues:

  • #19222
  • #25987
  • #30383

Screenshots/recordings

No response

Superset version

4.0.2

Python version

3.9

Node version

16

Browser

Chrome

Additional context

No response

Checklist

  • [X] I have searched Superset docs and Slack and didn't find a solution to my problem.
  • [X] I have searched the GitHub issue tracker and didn't find a similar bug report.
  • [X] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.

OldrichDlouhy avatar Oct 11 '24 13:10 OldrichDlouhy

The issue with importing a MySQL connection that includes timeouts might be related to validation checks on the cache_timeout and metadata_cache_timeout fields. If these fields are not handled correctly during import, it can lead to errors.

To resolve this, you can:

  1. Remove or Comment Out Timeouts: As you've discovered, commenting out the cache_timeout and metadata_cache_timeout fields in the YAML file can bypass the validation issue.

  2. Check Validation Logic: Ensure that the fields are correctly formatted and meet any validation requirements in the Superset version you are using.

  3. Update Superset: If possible, check if there are updates or patches available for Superset that address this issue.

The workaround you've used is effective, but it might be worth investigating if there are any updates or configuration changes that could permanently resolve the issue.

To continue talking to Dosu, mention @dosu.

dosubot[bot] avatar Oct 11 '24 13:10 dosubot[bot]

Did the bot help? Are you still facing this? It's been > 6 months, so I'll close this as stale, but we're happy to revisit/reopen if warranted.

rusackas avatar Apr 16 '25 22:04 rusackas

No, the bot did not help. It just stated my workaround should work, which, obviously, I know as I come up and used the workaround in the first place.

We needed to import the database only once, so I have no clue whether it was fixed or not. I would expect some superset developer to check it and see whether it is fixed, the issue and steps to reproduce are clear and simple.

OldrichDlouhy avatar Apr 17 '25 05:04 OldrichDlouhy