Exported MySQL Database Connection cannot be imported
Bug description
Importing MySQL connection exported on different Superset instance fails on validation.
- On first instance, create MySQL connection
- On Advanced tab, edit the Chart Cache Timeout and set it to 3600
- Export the connection
- On second superset instance, add database and select "Import database from file"
- 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.
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:
-
Remove or Comment Out Timeouts: As you've discovered, commenting out the
cache_timeoutandmetadata_cache_timeoutfields in the YAML file can bypass the validation issue. -
Check Validation Logic: Ensure that the fields are correctly formatted and meet any validation requirements in the Superset version you are using.
-
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.
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.
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.