本文收集了我在编程、使用软件时遇到的各种问题和解决方案

Python

报错1

1. 执行
pip install -r .\requirements.txt

2. 报错

pip install -r .\requirements.txt
Fatal error in launcher: Unable to create process using '"D:\FCJ\Projects\PycharmProjects\FastApiTemplate\venv\Scripts\python.exe"  "D:\FCJ\Projects\PycharmProjects\FastApiDemo\venv\Scripts\pip.exe" install -r .\requirements.txt': ???????????

3. 问题描述
使用命令virtualenv -p python3 venv在项目中创建了Python虚拟环境后,使用pip install -r .\requirements.txt命令安装项目中的依赖包时报错:Fatal error in launcher: Unable to create process using...

4. 解决
.\venv\Scripts\python -m pip install -r .\requirements.txt

报错2

1. 报错
ModuleNotFoundError: No module named 'MySQLdb'
2. 解决
pip install mysqlclient,如果还不解决,则执行pip install pymysql

报错3

1. 报错
None RuntimeError: no validator found for <class 'pydantic.fields.UndefinedType'>, see arbitrary_types_allowed in Config

2. 问题描述
在FastApi执行的时候报错,因为有几成了 pydantic 的 BaseModel 的类中有字段用了 None 类型或者一些 pydantic 中没有的类型的时候就会报这个错

3. 解决
pip install mysqlclient,如果还不解决,则执行pip install pymysql

报错4

1. 报错
fastapi.exceptions.FastAPIError: Invalid args for response field! Hint: check that default=Ellipsis extra={} is a valid pydantic field type

2. 问题描述
在FastApi执行的时候报错,因为接口参数没有指定类型。

3. 解决
比如async def post_db_select(user_id: Body(...)):,改成async def post_db_select(user_id: dict=Body(...)):即可,即给参数使用dict类型或者str等类型

报错5

1. 报错
ImportError: cannot import name 'COMMAND' from 'MySQLdb.constants' (D:\FCJ\Projects\PycharmProjects\FastApi\venv\lib\site-packages\MySQLdb\constants\__init__.py)

2. 问题描述
在 FastApi 项目中使用了 sqlacodegen 自动生成 sqlalchemy 实体,使用时在 sqlacodegen 包的 init.py 文件中添加了以下2行内容:
import pymysql
pymysql.install_as_MySQLdb()

3. 解决
将上面那2行注释即可,需要根据数据库生成实体时再打开注释

报错6

1. 报错
TypeError: Class org.H2.Driver is not found

2. 问题描述
在使用Python连接H2数据库时报错

3. 解决
h2一定要小写,把 org.H2.Driver 改为 org.h2.Driver

报错7

1. 报错
ModuleNotFoundError: No module named 'MySQLdb'

2. 问题描述
将FastAPI项目部署到Linux时报错

3. 解决
按以下方法逐步操作尝试,如果报错就执行apt update

  • ./venv/bin/pip install mysqlclient
  • ./venv/bin/pip install pymysql
  • apt install libmysqlclient-dev
  • apt install python-mysqldb
  • __init__.py中添加以下代码(某些情况下不要做这一步,可能做了这一步会报错: ImportError: cannot import name 'COMMAND' from 'MySQLdb.constants')
import pymysql
pymysql.install_as_MySQLdb()

报错8

1. 报错
requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(0 bytes read)'

2. 问题描述
使用 request 请求时报错

3. 解决
尝试使用1.0的HTTP版本进行请求

报错9

1. 报错
requests.exceptions.SSLError: HTTPSConnectionPool(host='ns.huatu.com', port=443): Max retries exceeded with url: xxx (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))

2. 问题描述
使用 request 请求时报错 SSL 认证错误

3. 解决
给请求加上参数 , verify=False 即可,比如: response_dict = requests.post(url,headers=headers, verify=False).json(),这样就可以请求到数据了。
此时还会有报警C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connectionpool.py:842: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings,加上以下代码即可:requests.packages.urllib3.disable_warnings()(过滤所有urllib3的报警),或from requests.packages.urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning)(过滤InsecureRequestWarning)

Linux Shell

报错1

1. 执行
mkdir /home/plantask/Halo/temp

2. 报错

mkdir: cannot create directory ‘/home/plantask/Halo/temp’: No such file or directory...

3. 问题描述
创建文件夹失败,原因是: mkdir创建多级目录时需要加参数 p

4. 解决
mkdir -p /home/plantask/Halo/temp

软件

报错1

1. 执行
在DataGrip中修改数据库字段时报错,修改字段失败

2. 报错
[HY000][3959] Check constraint '修改的表名_chk_4' uses column '字段名', hence column cannot be dropped or renamed.

3. 解决
新增一个一个字段,然后将原有字段数据复制到新字段,把原有字段删除即可

IDEA启动报错

BindException: Address already in use: bind
以管理员身份执行: net stop winnat && net start winnat

Docker

启动或重启报错: “Failed to start Docker Application Container Engine.”
原因: /etc/docker/daemon.json 列表多了一个逗号

vi /etc/docker/daemon.json

# 写入以下内容并保存
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com" # 注意这里不能有逗号,否则在下面重启时会报错: "Failed to start Docker Application Container Engine."
  ]
}

# {
#   "registry-mirrors": [
#     "https://docker.mirrors.ustc.edu.cn",
#     "https://registry.docker-cn.com",
#     "http://hub-mirror.c.163.com",  # 如果这里有逗号,启动时会报错: "Failed to start Docker Application Container Engine."
#   ]
# }
# 如果报错 "Failed to start Docker Application Container Engine." ,则使用以下命令查看错误日志。发现 ] 附近有错误,发现是多了个逗号无法解析成 json (python 用多了,哭..),把 /etc/docker/daemon.json 中的 ] 的前一个逗号删除即可
root@fucaijin:~# dockerd --log-level error # 查看 docker 的报错日志
unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character ']' looking for beginning of value

docker pull mysql:latest下载不下来提示Pulling fs layer 或 Waiting 或 Retrying in 1 second

1. 执行命令拉取思源笔记的镜像
docker pull b3log/siyuan

2. 报错
卡住了一直pull不下来,提示Pulling fs layer 或 Waiting 或 Retrying in 1 second
image

3. 问题描述
主要是因为国家把docker国外镜像hub封掉了,导致镜像pull不下来,为此,改用国内的镜像

4. 解决
修改docker镜像源

vi /etc/docker/daemon.json

# 写入以下内容并保存
{
   "registry-mirrors": [
     "https://docker.mirrors.ustc.edu.cn",
     "https://registry.docker-cn.com",
     "https://ydxkc6mw.mirror.aliyuncs.com",
     "https://hub.docker.com",
     "https://hub.daocloud.io",
     "https://hub-mirror.c.163.com",
     "http://ef017c13.m.daocloud.io"
   ],
   "insecure-registries": ["10.0.0.12:5000"]
 }

重启docker
systemctl daemon-reload
systemctl restart docker

再次执行 docker pull b3log/siyuan 即可

修改/etc/docker/daemon.json后报错

1. 问题描述
在修改/etc/docker/daemon.json后报错执行systemctl daemon-reload了,再执行systemctl restart docker命令时报错:

Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

此时执行 sudo dockerd --debug查看docker日志,发现信息:

INFO[2022-11-19T11:20:28.685809361+08:00] Starting up                             
DEBU[2022-11-19T11:20:28.686321384+08:00] Listener created for HTTP on unix (/var/run/docker.sock) 
failed to start daemon: invalid mirror: path, query, or fragment at end of the URI "https://c.163.com/hub#/m/home"

image-1668829311351
原来是/etc/docker/daemon.json文件中的"https://c.163.com/hub#/m/home"这一行有误,删除即可。

git

无法提交

1. 问题描述
idea git没有历史提交记录,修改后切换另一个文件,被修改的文件又会变回未修改状态

2. 解决
参考: https://blog.csdn.net/tcjy1000/article/details/127129224
问题搜索关键字:“detected dubious ownership in repository”
右键项目所在的文件夹→属性→安全→高级→更改→高级→立即查找→双击选择当前登录的用户名,一般是Administrator→确定→勾选“替换子容器和对象的所有者”、“使用可从此对象继承的权限项目替换所有子对象的权限项目§”→确定即可

Q.E.D.


做一个热爱生活的人