web浏览器能登录,客户端软件包服务器内部错误

账号通过web能正常登录、使用、上传、下载等;但是通过seafile客户端登录就提示:登录失败:服务器内部错误,有大神知道怎么解决么

报这个错2024-12-02 20:18:49,242 [ERROR] django.request:210 handle_uncaught_exception Internal Server Error: /api2/auth-token/
Traceback (most recent call last):
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\django-1.5.12-py2.7.egg\django\core\handlers\base.py”, line 113, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\django-1.5.12-py2.7.egg\django\views\generic\base.py”, line 68, in view
return self.dispatch(request, *args, **kwargs)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\django-1.5.12-py2.7.egg\django\views\decorators\csrf.py”, line 77, in wrapped_view
return view_func(*args, **kwargs)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\rest_framework\views.py”, line 363, in dispatch
response = self.handle_exception(exc)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\rest_framework\views.py”, line 360, in dispatch
response = handler(request, *args, **kwargs)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\seahub\api2\views.py”, line 184, in post
if serializer.is_valid():
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\rest_framework\serializers.py”, line 299, in is_valid
return not self.errors
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\rest_framework\serializers.py”, line 293, in errors
obj = self.from_native(self.init_data, self.init_files)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\rest_framework\serializers.py”, line 263, in from_native
attrs = self.perform_validation(attrs)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\rest_framework\serializers.py”, line 221, in perform_validation
attrs = self.validate(attrs)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\seahub\api2\serializers.py”, line 73, in validate
client_version, platform_version)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\seahub\api2\utils.py”, line 547, in get_token_v2
client_version, platform_version, get_client_ip(request))
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\seahub\api2\models.py”, line 86, in get_or_create_token
token.save()
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\seahub\api2\models.py”, line 131, in save
return super(TokenV2, self).save(*args, **kwargs)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\django-1.5.12-py2.7.egg\django\db\models\base.py”, line 546, in save
force_update=force_update, update_fields=update_fields)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\django-1.5.12-py2.7.egg\django\db\models\base.py”, line 650, in save_base
result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\django-1.5.12-py2.7.egg\django\db\models\manager.py”, line 215, in _insert
return insert_query(self.model, objs, fields, **kwargs)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\django-1.5.12-py2.7.egg\django\db\models\query.py”, line 1675, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\django-1.5.12-py2.7.egg\django\db\models\sql\compiler.py”, line 943, in execute_sql
cursor.execute(sql, params)
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\django-1.5.12-py2.7.egg\django\db\backends\sqlite3\base.py”, line 364, in execute
six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])
File “E:\SeafileProgram\seafile-server-5.0.3\seahub\thirdpart\django-1.5.12-py2.7.egg\django\db\backends\sqlite3\base.py”, line 362, in execute
return Database.Cursor.execute(self, query, params)
IntegrityError: api2_tokenv2.created_at may not be NULL

从日志上看,您的seafile版本是5.0,版本太老了,建议您使用docker标准化部署最新版。

直接将非常旧的 Seafile 实例升级到最新版本非常困难。因此,我们建议您按照备份和恢复流程,即运行最新版本的新 Seafile 实例并从旧实例迁移数据。 相关文档见: 备份和恢复 - seafile-manual-cn

我们的建议步骤如下:

  1. 确保新的 Seafile 实例可以在新机器上正确运行
  2. 停止新的 Seafile 实例并清理其数据库(MySQL/MariaDB数据)
  3. 将旧服务器上的数据库和 seafile 数据备份和恢复到新服务器
  4. 现在新实例中的数据库表是旧版本的。 您需要运行升级脚本来更新数据库表以与最新版本兼容。 (或者您可以手动运行SQL语句,文件位于seafile-server-latest/upgrade/sql下)
  5. 重新启动新的Seafile实例,并检查日志以查看是否有任何与数据库相关的错误。 如果是这样,请手动修复它们。

问题解决了,留个记录,希望后面看到的人有帮助,日志提示:IntegrityError: api2_tokenv2.created_at may not be NULL,打开:seahub.db这个库,api2_tokenv2这张表,把created_at字段删除