pycharm连接虚拟机搭建的mysql遇到的问题整理
2022/2/6 19:14:13
本文主要是介绍pycharm连接虚拟机搭建的mysql遇到的问题整理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
pycharm连接虚拟机搭建的mysql遇到的问题整理
- 1. pycharm连接mysql数据库
- 2. pycharm连接时遇到的问题
- 2.1 mysql版本和驱动问题
- 2.2 连接报错超时
- 2.3 SSH连接MYSQL
- 3. pycharm代码中连接数据库出现的问题
- 3.1 关于模块MySQLdb
- 3.2 连接时报错time_out
- 3.3 关于create_engine用法
1. pycharm连接mysql数据库
连接教程可参考PyCharm连接虚拟机MySql数据库。
2. pycharm连接时遇到的问题
2.1 mysql版本和驱动问题
在虚拟机中安装的版本为5.1.49,需要在mysql for 5.1选择上对应的驱动。
问题解决参考了官方文档Cannot connect to a database
2.2 连接报错超时
在连接成功后第二天,我再一次测试时发现,报错:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Last packet sent to the server was 0 ms ago
参考MySQL第二天早上第一次连接超时报错,解决方法
原因是因为mysql配置出现问题。在mysql中存在两个计时操作,参数名为interactive_timeout和wait_timeout。含义如下:
1)interactive_timeout:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。
参数默认值:28800秒(8小时)
(2)wait_timeout:服务器关闭非交互连接之前等待活动的秒数。
在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。
参数默认值:28800秒(8小时)
当一个客户端连接到MySQL数据库后,如果客户端不自己断开,也不做任何操作,MySQL数据库会将这个连接保留"wait_timeout"这么长时间(单位是s,默认是28800s,也就是8小时),超过这个时间之后,MySQL数据库为了节省资源,就会在数据库端断开这个连接;当然,在此过程中,如果客户端在这个连接上有任意的操作,MySQL数据库都会重新开始计算这个时间。
因此为了防止超时,需要将两个超时定时器改大。改动方法见MySQL第二天早上第一次连接超时报错,解决方法
2.3 SSH连接MYSQL
在PyCharm连接虚拟机MySql数据库文章中提及
因为我们连接的是虚拟机的MySQL,所以需要填SSH(安全外科协议),通过SSH安全地连接到虚拟机上进行数据交互
这个问题在我解决2.2问题中,重新连接mysql数据库时,忘记了填写ssh消息,导致一直连不上。关于ssh相关知识还待补充。
3. pycharm代码中连接数据库出现的问题
3.1 关于模块MySQLdb
报错
ModuleNotFoundError: No module named ‘MySQLdb
我安装的python版本是3.9
MySQLdb只支持Python2.,还不支持3.
可以用PyMySQL代替。安装方法:pip install PyMySQL
在使用import sqlalchemy时加上:import pymysql
pymysql.install_as_MySQLdb(),即:
import pymysql pymysql.install_as_MySQLdb() from sqlalchemy import create_engine
参考:
python3.6报错ModuleNotFoundError: No module named ‘MySQLdb‘及解决方法
3.2 连接时报错time_out
报错
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '...' (timed out)")
首先检查是否赋予了用户远程访问的权限。
在确定赋予以后,查看MySQL 3306端口是否监听,
netstat -nltp | grep 3306
最后检查防火墙状态,确认为关闭状态。
3.3 关于create_engine用法
用法:
engine = create_engine(‘dialect+driver://username:password@host:port/database’)
dialect – 数据库类型
driver – 数据库驱动选择
username – 数据库用户名
password – 用户密码
host 服务器地址
port 端口
database 数据库
例如 mysql:
mysql-python
engine = create_engine(‘mysql+mysqldb://scott:tiger@localhost/foo’)
更多数据类型参考python sqlalchemy中create_engine用法
这篇关于pycharm连接虚拟机搭建的mysql遇到的问题整理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南
- 2024-10-22MySQL数据库入门教程:从安装到基本操作
- 2024-10-22MySQL读写分离入门教程:轻松实现数据库性能提升
- 2024-10-22MySQL分库分表入门教程
- 2024-10-22MySQL慢查询的诊断与优化指南
- 2024-10-22MySQL索引入门教程:快速理解与应用指南
- 2024-10-22MySQL基础入门教程:从安装到基本操作
- 2024-10-22MySQL数据库中的Binlog详解与操作教程
- 2024-10-12部署MySQL集群项目实战:新手入门教程