metabase/metabase

Exporting files with spaces on Windows machines will break the export

Aberta

#38.319 aberto em 31 de jan. de 2024

 (0 comentário) (0 reação) (0 responsável)Clojure (6.465 forks)batch import
.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

  1. 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');

  1. go to settings->general and disable friendly names
  2. 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

Guia do colaborador