Skip to content

dbName with slash doesn't work #2152

@lucasfcnunes

Description

@lucasfcnunes

What happened?

Trying to use as dbName in the DSN:

  • vcluster/dev
# ...
syncer 2024-09-17 22:51:36    INFO    commandwriter/commandwriter.go:126    Starting k3s v1.30.2+k3s1 (aa4794b3)    {"component": "vcluster", "component": "k3s", "time": "2024-09-17T22:51:36Z", "level": "info"}
syncer 2024-09-17 22:51:36    INFO    commandwriter/commandwriter.go:126    starting kubernetes: preparing server: creating storage endpoint: building kine: invalid DSN: did you forget to escape a param value?    {"component": "vcluster", "component": "k3s", "time": "2024-09-17T22:51:36Z", "level": "fatal"}
syncer 2024-09-17 22:51:36    INFO    setup/initialize.go:165    Error running k3s: exit status 1    {"component": "vcluster"}
  • vcluster%2Fdev
# ...
syncer 2024-09-17 23:25:13    INFO    commandwriter/commandwriter.go:126    Starting k3s v1.30.2+k3s1 (aa4794b3)    {"component": "vcluster", "component": "k3s", "time": "2024-09-17T23:25:13Z", "level": "info"}
syncer 2024-09-17 23:25:13    INFO    commandwriter/commandwriter.go:126    failed to check existence of database vcluster%2Fdev, going to attempt create: Error 1049 (HY000): database not found: vcluster%2Fdev    {"component": "vcluster", "component": "k3s", "time": "2024-09-17T23:25:13Z", "level": "warning"}
syncer 2024-09-17 23:25:13    INFO    commandwriter/commandwriter.go:126    starting kubernetes: preparing server: creating storage endpoint: building kine: Error 1105 (HY000): syntax error at position 40 near 'vcluster'    {"component": "vcluster", "component": "k3s", "time": "2024-09-17T23:25:13Z", "level": "fatal"}
syncer 2024-09-17 23:25:13    INFO    setup/initialize.go:165    Error running k3s: exit status 1    {"component": "vcluster"}

What did you expect to happen?

I expected to see Vcluster creating and using the database/schema with a slash in its name.

How can we reproduce it (as minimally and precisely as possible)?

  1. docker run --rm -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:8.0.33
controlPlane:
  distro:
    k3s:
      enabled: true
  backingStore:
    database:
      external:
        enabled: true
        dataSource: mysql://root:root@tcp(localhost:3306)/vcluster/dev
        # OR
        # dataSource: mysql://root:root@tcp(localhost:3306)/vcluster%2Fdev
  1. Get the error

--
PS: MySQL does support the following DDL:

create database `vcluster/dev`;

Anything else we need to know?

Host cluster Kubernetes version

$ kubectl version
Client Version: v1.31.0
Kustomize Version: v5.4.2
Server Version: v1.30.3-gke.1639000

vcluster version

$ vcluster --version
vcluster version 0.20.0

VCluster Config

controlPlane:
  distro:
    k3s:
      enabled: true
  backingStore:
    database:
      external:
        enabled: true
        dataSource: mysql://root:root@tcp(localhost:3306)/vcluster/dev
        # OR
        # dataSource: mysql://root:root@tcp(localhost:3306)/vcluster%2Fdev

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions