metabase/metabase
Exporting files with spaces on Windows machines will break the export
Aberta
#38.319 aberto em 31 de jan. de 2024
.Backend.Team/GadgetOperation/SerializationPriority:P3Type:Buggood first issue
Métricas do repositório
- Stars
- (47.314 estrelas)
- Métricas de merge de PR
- (Mesclagem média 1d 15h) (1.000 fundiu PRs em 30d)
Description
Describe the bug
If you have fields with spaces on the db and you disable field humanization-strategy, then exporting those fields in a windows machine will fail. The reason is that windows has some problems on filenames with spaces.
To Reproduce
On a windows machine/vm
- run the following sql in a db CREATE TABLE Table2 ( ID INT PRIMARY KEY, "A Description in a database " VARCHAR(255) NOT NULL );
-- Insert statements for Table2 INSERT INTO Table2 VALUES (1, 'Descr1'), (2, 'Descr2'), (3, 'Descr3'), (4, 'Descr4'), (5, 'Descr5');
- go to settings->general and disable friendly names
- try an export
Expected behavior
It should work in Windows
Logs
java.io.FileNotFoundException: new_test_export\databases\xxxxx\schemas\dbo\tables\xxxxx\fields\xxxx .yaml (The filename, directory name, or volume label syntax is incorrect)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:292)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:235)
at clojure.java.io$fn__11619.invokeStatic(io.clj:230)
at clojure.java.io$fn__11619.invoke(io.clj:230)
at clojure.java.io$fn__11543$G__11525__11550.invoke(io.clj:69)
at clojure.java.io$fn__11593.invokeStatic(io.clj:166)
at clojure.java.io$fn__11593.invoke(io.clj:166)
at clojure.java.io$fn__11556$G__11521__11563.invoke(io.clj:69)
at clojure.java.io$writer.invokeStatic(io.clj:119)
at clojure.java.io$writer.doInvoke(io.clj:104)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at clojure.lang.AFn.applyToHelper(AFn.java:154)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$spit.invokeStatic(core.clj:7021)
at clojure.core$spit.doInvoke(core.clj:7021)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at metabase_enterprise.serialization.dump$spit_yaml_BANG_.invokeStatic(dump.clj:66)
at metabase_enterprise.serialization.dump$spit_yaml_BANG_.invoke(dump.clj:59)
at metabase_enterprise.serialization.v2.storage$store_entity_BANG_.invokeStatic(storage.clj:30)
at metabase_enterprise.serialization.v2.storage$store_entity_BANG_.invoke(storage.clj:28)
at metabase_enterprise.serialization.v2.storage$store_BANG_.invokeStatic(storage.clj:47)
at metabase_enterprise.serialization.v2.storage$store_BANG_.invoke(storage.clj:39)
at metabase_enterprise.serialization.cmd$v2_dump_BANG_$fn__109425.invoke(cmd.clj:222)
at metabase_enterprise.serialization.cmd$v2_dump_BANG_.invokeStatic(cmd.clj:218)
at metabase_enterprise.serialization.cmd$v2_dump_BANG_.invoke(cmd.clj:207)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.lang.Var.applyTo(Var.java:705)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$apply.invoke(core.clj:662)
at metabase.cmd$call_enterprise.invokeStatic(cmd.clj:54)
at metabase.cmd$call_enterprise.doInvoke(cmd.clj:43)
at clojure.lang.RestFn.invoke(RestFn.java:439)
at metabase.cmd$export.invokeStatic(cmd.clj:218)
at metabase.cmd$export.doInvoke(cmd.clj:207)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at clojure.lang.AFn.applyToHelper(AFn.java:154)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$apply.invoke(core.clj:662)
at metabase.cmd$run_cmd$fn__108462.invoke(cmd.clj:301)
at metabase.cmd$run_cmd.invokeStatic(cmd.clj:300)
at metabase.cmd$run_cmd.invoke(cmd.clj:290)
at clojure.lang.Var.invoke(Var.java:388)
at metabase.core$run_cmd.invokeStatic(core.clj:178)
at metabase.core$run_cmd.invoke(core.clj:176)
at metabase.core$entrypoint.invokeStatic(core.clj:200)
at metabase.core$entrypoint.doInvoke(core.clj:195)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:705)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$apply.invoke(core.clj:662)
at metabase.bootstrap$_main.invokeStatic(bootstrap.clj:31)
at metabase.bootstrap$_main.doInvoke(bootstrap.clj:28)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at metabase.bootstrap.main(Unknown Source)
Command failed with exception: new_test_export\databases\xxxxx\schemas\dbo\tables\xxxxxxx\fields\xxxxxx .yaml (The filename, directory name, or volume label syntax is incorrect)
Information about your Metabase installation
v47.x+
Severity
P2
Additional context
No response