记使用数据库8.0遇到的坑

本文介绍了解决在使用IntelliJ IDEA连接MySQL 8.0版本数据库时遇到的连接错误的方法,包括更新Maven中的MySQL jar包版本、更换数据库驱动、关闭SSL连接及设置时区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

跑公司项目,由于电脑是台新电脑,所有的软件都是在网上下载的最新版的,当然mysql也是下载的最新的8.0版本的,在本地使用navicat跑数据库是正常的,但是使用idea连接数据库的时候才发现一直报错,说连接不上数据库,在这里经过群里人的提醒,去百度搜索数据库8.0的问题,发现了原因

https://blog.youkuaiyun.com/qq_41734885/article/details/80562815这篇博客中找到了答案,首先需要在maven里更新下mysql的jar包

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>

其次mysql的驱动换了,不是com.mysql.jdbc.Driver而是变成了com.mysql.cj.jdbc.Driver,此外,需要把ssl连接关闭,最后还需要设置CST,

按照红线修改就行了

最后感谢广大网友的分享!

<think>好的,我现在需要帮助用户解决如何通过PyCharm创建的Flask空项目连接本地MySQL 8.0数据库,具体数据库名为talent_matching。用户之前已经创建了数据库和表,现在需要连接到现有的结构。 首先,用户可能对Flask项目的结构不太熟悉,因为提到是空项目。可能需要先建议用户安装必要的库,比如Flask-SQLAlchemy和PyMySQLMySQL 8.0默认使用caching_sha2_password认证,而旧版本的驱动可能有兼容性问题,所以需要确认用户使用的驱动是否正确,可能需要安装PyMySQL或者mysqlclient。 接下来,配置数据库连接字符串是关键。需要指导用户设置正确的URI,括用户名、密码、主机、端口和数据库名。这里要注意MySQL 8.0的默认端口是3306,以及是否需要SSL连接。如果用户遇到认证错误,可能需要调整认证插件或者用户权限。 然后,关于初始化数据库的部分,用户可能已经有现有的表,是否需要使用Flask-Migrate来管理迁移?如果表结构已经存在,可能需要设置SQLALCHEMY_TRACK_MODIFICATIONS为False,并建议用户使用db.create_all()时要小心,避免覆盖现有表。 用户可能还不太清楚如何在视图函数中使用模型,所以需要提供一个简单的模型示例,并说明如何查询数据。同时,要提醒用户替换示例中的占位符,如__tablename__和字段名,以匹配他们的实际表结构。 另外,可能需要注意用户是否已经正确安装MySQL的客户端库,比如在Windows上可能需要安装MySQL Connector/C,否则安装mysqlclient可能会失败。这时可能需要建议用户使用PyMySQL作为替代,并修改连接字符串。 最后,常见问题部分需要涵盖连接超时、权限问题、驱动兼容性和防火墙设置,这些都是用户在连接本地MySQL时可能遇到的典型问题。提醒用户检查MySQL服务是否运行,用户是否有远程访问权限,以及防火墙是否阻止了连接。 总结步骤应该是:安装依赖、配置数据库URI、初始化扩展、创建模型类、测试连接。确保用户能够一步步操作,并验证连接是否成功。同时,提供示例代码和注意事项,帮助用户避免常见错误。</think>以下是连接本地MySQL 8.0数据库的完整流程(含代码示例和避指南): --- ### 一、环境准备 1. 安装必要(PyCharm终端执行): ```bash pip install flask-sqlalchemy pymysql # 推荐pymysql驱动(兼容MySQL8.0) # 或 pip install mysqlclient # 需先安装MySQL C库(Windows需下载whl文件) ``` --- ### 二、配置数据库连接 #### 1. 在`app.py`中添加配置: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config[&#39;SQLALCHEMY_DATABASE_URI&#39;] = &#39;mysql+pymysql://root:your_password@localhost:3306/talent_matching&#39; app.config[&#39;SQLALCHEMY_TRACK_MODIFICATIONS&#39;] = False # 关闭警告 db = SQLAlchemy(app) ``` #### 2. 连接参数说明: ```markdown mysql+pymysql://[用户名]:[密码]@[主机]:[端口]/[数据库名] ``` --- ### 三、创建数据模型(映射现有表) 假设已有`users`表结构: ```sql CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL ) ``` #### 对应Python模型类: ```python class User(db.Model): __tablename__ = &#39;users&#39; # 必须与数据库表名一致 id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), nullable=False) email = db.Column(db.String(100), unique=True, nullable=False) def __repr__(self): return f&#39;<User {self.username}>&#39; ``` --- ### 四、验证连接(关键步骤) 在路由中测试: ```python @app.route(&#39;/test_db&#39;) def test_db(): try: # 尝试查询第一条录 user = User.query.first() return f"数据库连接成功!首条录:{user.username}" except Exception as e: return f"连接失败:{str(e)}", 500 ``` --- ### 五、完整项目结构 ```lua your_project/ ├── app.py # 主程序 ├── config.py # 配置文件(可选) ├── models/ # 模型目录 │ └── user_model.py # 用户模型 └── requirements.txt # 依赖列表 ``` --- ### 六、MySQL 8.0特殊配置(常见错误解决) 1. **认证协议问题**: ```sql -- 在MySQL命令行执行 ALTER USER &#39;your_username&#39;@&#39;localhost&#39; IDENTIFIED WITH mysql_native_password BY &#39;your_password&#39;; FLUSH PRIVILEGES; ``` 2. **客户端时区设置**: ```python # 在连接URI末尾追加时区参数 app.config[&#39;SQLALCHEMY_DATABASE_URI&#39;] += &#39;?charset=utf8mb4&connect_timeout=10&local_infile=1&#39; ``` --- ### 七、操作数据库示例 ```python # 查询所有用户 users = User.query.all() # 按条件查询 admin = User.query.filter_by(username=&#39;admin&#39;).first() # 新增用户 new_user = User(username=&#39;test&#39;, email=&#39;test@example.com&#39;) db.session.add(new_user) db.session.commit() ``` --- ### 八、常见问题排查表 | 现象 | 解决方案 | |--------------------------|----------------------------| | 2003: Can&#39;t connect | 检查MySQL服务是否启动 | | Access denied | 检查用户名/密码和权限 | | No module named &#39;pymysql&#39;| 重新安装pymysql | | 超时错误 | 在URI添加`connect_timeout=30` | | 字符编码错误 | 添加`?charset=utf8mb4` | 需要补充说明如何通过PyCharm的Database工具直接连接数据库吗?可以展示可视化操作界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值