Updated from 6.3.4 to 9.0.9 [sqlite on Ubuntu and updated to 20.04] - Users and Devices page show red "error"

No other errors, seems to be working perfectly other than the ‘Users’ and ‘Devices’ page in the admin panel say ‘Error’ in red letters.

Seahub log showed

2022-09-27 11:26:40,925 [ERROR] django.request:224 log_response Internal Server Error: /api/v2.1/admin/devices/
Traceback (most recent call last):
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/rest_framework/views.py", line 505, in dispatch
    response = self.handle_exception(exc)
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/rest_framework/views.py", line 465, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/rest_framework/views.py", line 476, in raise_uncaught_exception
    raise exc
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/rest_framework/views.py", line 502, in dispatch
    response = handler(request, *args, **kwargs)
  File "/media/raid1/seafile-server-9.0.9/seahub/seahub/api2/endpoints/admin/devices.py", line 48, in get
    if len(devices) == end - start:
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/django/db/models/query.py", line 262, in len
    self._fetch_all()
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/django/db/models/query.py", line 1324, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/django/db/models/query.py", line 51, in iter
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/django/db/models/sql/compiler.py", line 1208, in execute_sql
    return list(result)
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/django/db/models/sql/compiler.py", line 1646, in cursor_iter
    for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/django/db/models/sql/compiler.py", line 1646, in <lambda>
    for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/django/db/utils.py", line 97, in inner
    return func(*args, **kwargs)
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/django/db/backends/sqlite3/base.py", line 42, in <lambda>
    return lambda s: conv_func(s.decode())
  File "/media/raid1/seafile-server-9.0.9/seahub/thirdpart/django/utils/dateparse.py", line 122, in parse_datetime
    return datetime.datetime(**kw)
ValueError: year 0 is out of range

After troubleshooting that everything was setup correctly, the only solution I found was:

sqlite3 /path/to/seahub.db
UPDATE api2_tokenv2 SET created_at=‘0001-01-01 00:00:00’ WHERE created_at=‘0000-00-00 00:00:00’;
.quit

This solved my issue.

Added this for visibility/documentation in case anyone else has this same problem.