上传支付宝/微信账单 报错不支持
1.00 版本 docker compose部署 上传支付宝或微信账单csv文件 显示“请上传支持的账单文件”
Releases 1.0.0 的问题已修复,Django的CSRF令牌导致,由于使用JWT认证已不需要CSRF令牌,已禁用。
项目已支持CI/CD,代码更新会自动重新构建平台以保持功能同步。
可以尝试使用最新代码或我自己提供的平台。
尝试使用release 1.0中的backbends/fronbends, docker compose部署,但是还是一样的问题
docker compose up -d 会直接使用dhr2333/beancount-trans-xxx:xxx的镜像,不应该出现无法解析的情况。
可以先试试http://localhost:38001/map/expenses能否正常返回数据。
项目刚启动数据库初始化需要时间,建议两三分钟后重试。
localhost:38001/map/expesens 可正常打开
但是由于没有导入数据,还没有任何记录
未登录时拥有admin账户的查看权限,应能正常显示数据。
只有新注册用户时才没有任何记录。
可以重点排查一下数据库,以及后端与数据库之间的连接,例如docker logs -f beancount-trans-backend或docker logs -f beancount-trans-mysql
的确是backbends和sql通信有问题,请问该如何调整 ^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 256, in get_new_connection
connection = Database.connect(**conn_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/MySQLdb/init.py", line 121, in Connect
return Connection(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/MySQLdb/connections.py", line 195, in init
super().__init__(*args, **kwargs2)
MySQLdb.OperationalError: (2002, "Can't connect to server on 'beancount-trans-mysql' (115)")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/code/beancount-trans/manage.py", line 24, in
main()
File "/code/beancount-trans/manage.py", line 20, in main
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.11/site-packages/django/core/management/init.py", line 442, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.11/site-packages/django/core/management/init.py", line 436, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 413, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 107, in wrapper
res = handle_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/core/management/commands/migrate.py", line 100, in handle
self.check(databases=[database])
File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 486, in check
all_issues = checks.run_checks(
^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/core/checks/registry.py", line 88, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/core/checks/database.py", line 13, in check_database_backends
issues.extend(conn.validation.check(**kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/mysql/validation.py", line 9, in check
issues.extend(self._check_sql_mode(**kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/mysql/validation.py", line 14, in _check_sql_mode
self.connection.sql_mode & {"STRICT_TRANS_TABLES", "STRICT_ALL_TABLES"}
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/utils/functional.py", line 47, in get
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 452, in sql_mode
sql_mode = self.mysql_server_data["sql_mode"]
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/utils/functional.py", line 47, in get
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 408, in mysql_server_data
with self.temporary_connection() as cursor:
File "/usr/local/lib/python3.11/contextlib.py", line 137, in enter
return next(self.gen)
^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 691, in temporary_connection
with self.cursor() as cursor:
^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 316, in cursor
return self._cursor()
^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 292, in _cursor
self.ensure_connection()
File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 274, in ensure_connection
with self.wrap_database_errors:
File "/usr/local/lib/python3.11/site-packages/django/db/utils.py", line 91, in exit
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 275, in ensure_connection
self.connect()
File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 256, in connect
self.connection = self.get_new_connection(conn_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 256, in get_new_connection
connection = Database.connect(**conn_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/MySQLdb/init.py", line 121, in Connect
return Connection(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/MySQLdb/connections.py", line 195, in init
super().__init__(*args, **kwargs2)
django.db.utils.OperationalError: (2002, "Can't connect to server on 'beancount-trans-mysql' (115)")
docker compose down关闭服务,删除原有镜像,拉取最新代码,docker compose up -d重新启动会自动拉取最新镜像。
同样的问题……
尝试使用浏览器无痕模式看看。
chrome 无痕模式 不会报错但是也不会有结果 另外,使用最新的image,backends 还是有和数据库间连接问题
django.db.utils.OperationalError: (1130, "Host 'beancount-trans-backend.beancount-trans_default' is not allowed to connect to this MySQL server")
该不会开了防火墙吧?
debian 10 ,防火墙是关的
您遇到的这个错误 django.db.utils.OperationalError: (1130, "Host 'beancount-trans-backend.beancount-trans_default' is not allowed to connect to this MySQL server") 指的是 MySQL 数据库服务器没有授权主机 'beancount-trans-backend.beancount-trans_default' 来访问数据库。要解决这个问题,主要步骤包括查看和调整 MySQL 的用户访问权限。
以下是详细的解决步骤:
1. 了解 MySQL 用户权限
MySQL 数据库通过用户名、来源主机的组合来控制访问权限。错误提示该主机没有访问权限,表示数据库中没有相应的授权条目。
2. 登录 MySQL 数据库
首先,你需要以管理员身份登录到 MySQL 数据库:
mysql -u root -p
输入密码后登录。
3. 查看现有的用户权限
在 MySQL 命令行,你可以检查哪些用户有权限从哪些主机连接:
SELECT user, host FROM mysql.user;
这将列出所有用户及其对应的主机。
4. 赋予访问权限
如果该用户没有从 'beancount-trans-backend.beancount-trans_default' 连接的权限,你需要添加或更新权限。使用 GRANT 语句来赋予访问权限:
GRANT ALL PRIVILEGES ON databasename.* TO 'username'@'beancount-trans-backend.beancount-trans_default' IDENTIFIED BY 'password';
这里的 databasename 替换为你的数据库名,username 是访问该数据库的 MySQL 用户名,password 是该用户名的密码。
然后,刷新权限使更改生效:
FLUSH PRIVILEGES;
5. 重新尝试连接
更新完权限后,重新尝试让你的 Django 应用连接数据库。
有关注意事项
- 安全性:在允许远程访问时要考虑安全性,确保密码足夥强大,且仅在必要时允许远程访问。
- 错误排查:如果仍然遇到问题,确认数据库名、用户名正确,并检查是否有网络或防火墙设置阻止了连接。
通过以上步骤,可以解决由于权限配置不正确导致的连接问题。如果错误持续存在,继续检查网络设置和其他数据库配置问题。