passwords containing "#" caused "ValueError: Port could not be cast to integer value as 'xxxx'"
Karmenzind opened this issue · comments
_kmz 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'
_kmz commented
I noticed the comment Special characters in passwords and other strings can be escaped with URL encoding
.
Replacing #
with %23
worked.