laixintao / iredis

Interactive Redis: A Terminal Client for Redis with AutoCompletion and Syntax Highlighting.
https://iredis.xbin.io
BSD 3-Clause "New" or "Revised" License
2.55k stars 111 forks source link

using `--url` without port raised TypeError #451

Closed Karmenzind closed 2 years ago

Karmenzind commented 2 years ago
~/Workspace/refers/iredis (master ✔) ᐅ iredis --url 'redis://IP.without.port/0'
Traceback (most recent call last):
  File "/usr/bin/iredis", line 33, in <module>
    sys.exit(load_entry_point('iredis==1.12.0', 'console_scripts', 'iredis')())
  File "/usr/lib/python3.10/site-packages/iredis/entry.py", line 426, in main
    client = create_client(ctx.params)
  File "/usr/lib/python3.10/site-packages/iredis/entry.py", line 384, in create_client
    return Client(
  File "/usr/lib/python3.10/site-packages/iredis/client.py", line 77, in __init__
    self.build_connection()
  File "/usr/lib/python3.10/site-packages/iredis/client.py", line 103, in build_connection
    self.connection = self.create_connection(
  File "/usr/lib/python3.10/site-packages/iredis/client.py", line 156, in create_connection
    return connection_class(**connection_kwargs)
  File "/usr/lib/python3.10/site-packages/redis/connection.py", line 539, in __init__
    self.port = int(port)
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'NoneType'     
laixintao commented 2 years ago

Sorry this is not a bug, the iredis -h said:

  --url TEXT                Use Redis URL to indicate connection(Can set with
                            env `IREDIS_URL`), Example:
                            redis://[[username]:[password]]@localhost:6379/0
                            rediss://[[username]:[password]]@localhost:6379/0
                            unix://[[username]:[password]]@/path/to/socket.soc
                            k?db=0

which means, the parameters inside [] is optional, not in [] means required. So if you use url, you must have a port. we don't set default one. (same as db)