本文收集了我在编程、使用软件时遇到的各种问题和解决方案
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
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"
原来是/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.