dbcli / mycli

A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.

Home Page:http://mycli.net

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

passwords containing "#" caused "ValueError: Port could not be cast to integer value as 'xxxx'"

Karmenzind opened this issue · comments

commented
mycli --version
Version: 1.27.2

# my password is `xxx#xxx`
dsn1 = mysql://<username>:xxx#xxx@<ip>

output

Connecting to dsn1 (mycli -d dsn1) raised:

Traceback (most recent call last):
  File "/usr/local/bin/mycli", line 8, in <module>
    sys.exit(cli())
             ^^^^^
  File "/opt/pipx/venvs/mycli/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/pipx/venvs/mycli/lib/python3.11/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/opt/pipx/venvs/mycli/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/pipx/venvs/mycli/lib/python3.11/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/pipx/venvs/mycli/lib/python3.11/site-packages/mycli/main.py", line 1294, in cli
    port = uri.port
           ^^^^^^^^
  File "/usr/lib/python3.11/urllib/parse.py", line 182, in port
    raise ValueError(f"Port could not be cast to integer value as {port!r}")
ValueError: Port could not be cast to integer value as 'xxx'
commented

I noticed the comment Special characters in passwords and other strings can be escaped with URL encoding.
Replacing # with %23 worked.