Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python.Dataframe到MySql:MySql服务器已经消失了_Python_Mysql_Sqlalchemy_Mysql Connector_Pandas To Sql - Fatal编程技术网

从Python.Dataframe到MySql:MySql服务器已经消失了

从Python.Dataframe到MySql:MySql服务器已经消失了,python,mysql,sqlalchemy,mysql-connector,pandas-to-sql,Python,Mysql,Sqlalchemy,Mysql Connector,Pandas To Sql,我正在尝试用mysql编写几个数据帧。我使用连接和创建引擎 大多数数据帧都正确写入数据库。不幸的是,应用程序停止时出现以下错误: sqlalchemy.exc.DatabaseError: (mysql.connector.errors.DatabaseError) 2006 (HY000): MySQL server has gone away ... During handling of the above exception, another exception occurred: ...

我正在尝试用mysql编写几个数据帧。我使用连接和创建引擎

大多数数据帧都正确写入数据库。不幸的是,应用程序停止时出现以下错误:

sqlalchemy.exc.DatabaseError: (mysql.connector.errors.DatabaseError) 2006 (HY000): MySQL server has gone away
...
During handling of the above exception, another exception occurred:
...
_mysql_connector.MySQLInterfaceError: MySQL server has gone away
由于断开连接的数据帧也是最大的(pickle文件:198MB),我假设这是由于MySql服务器设置max\u allowed\u数据包或超时造成的。()

因此,我通过“connect_timeout”:900扩展了SQLConnector(见下文)中的配置文件。 不幸的是没有结果。 我还读到,您应该调整MySql服务器的my.cnf。不幸的是,我不知道在哪里可以找到它们。经过长时间的搜索,我找到了以下顺序。C:\Program Files\MySQL\MySQL Server 8.0\etc和文件mysqlrouter.conf.sample。 我已下载了my.cnf文件并将其放入文件夹中。不幸的是没有结果,因为我不知道如何设置MySql以便服务器使用此文件

有人知道我如何修复这个错误吗?或者如何配置MySql服务器首选项设置最大允许数据包或超时

主要内容:

SQLConnector:

import mysql.connector
from mysql.connector import errorcode
import sqlalchemy as db

config = {
    'user': 'root',
    'password': '',
    'host': '127.0.0.1',
    'database': 'test',
    'raise_on_warnings': True,
    'use_pure': False,
    'autocommit': True,
    'connect_timeout': 900
}


class MySQLConnector:
    def __init__(self):
        connectTest = self.connect()
        print("Connection to database: " + str(connectTest))

    def init_engine(self):
        try:
            connect_string = 'mysql+mysqlconnector://{}:{}@{}/{}?charset=utf8mb4'.format(config.get("user"),
                                                                                         config.get("password"),
                                                                                         config.get("host"),
                                                                                         config.get("database"),
                                                                                         pool_pre_ping=True)
            print("Engine: " + connect_string)
            sqlengine = db.create_engine(connect_string)
        except:
            print("SQLConnector: Sqlalchemy error. Can't create engine....")
        else:
            dbConnection = sqlengine.connect()
            return dbConnection

    def connect(self):
        try:
            con = mysql.connector.connect(**config)
        except mysql.connector.Error as err:
            if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
                print("Something is wrong with your user name or password")
            elif err.errno == errorcode.ER_BAD_DB_ERROR:
                print("Database does not exist")
                if self.createDB() is True:
                    return self.connect()
            elif err.errno == errorcode.CR_SERVER_GONE_ERROR:
                print("The client couldn't send a question to the server.")
                print("err: " + err)
            elif err.errno == errorcode.CR_SERVER_LOST:
                print(
                    "The client didn't get an error when writing to the server, but it didn't get a full answer (or any answer) to the question.")
                print("err: " + err)
            else:
                print(err)
            return None
        else:
            if con.is_connected():
                db_Info = con.get_server_info()
                print("Connected to MySQL Server version ", db_Info)
            sqlcursor = con.cursor()
            return con

    def createDB(self):
        try:
            mydb = mysql.connector.connect(
                host=config.get("host"),
                user=config.get("user"),
                passwd=config.get("password")
            )
        except mysql.connector.Error as err:
            print(err)
        else:
            sqlcursor = mydb.cursor()
        try:
            sqlcursor.execute('CREATE DATABASE {}'.format(config.get("database")))
        except mysql.connector.Error as err:
            print(err)
            return False
        else:
            print("Database created!")
            return True
import mysql.connector
from mysql.connector import errorcode
import sqlalchemy as db

config = {
    'user': 'root',
    'password': '',
    'host': '127.0.0.1',
    'database': 'test',
    'raise_on_warnings': True,
    'use_pure': False,
    'autocommit': True,
    'connect_timeout': 900
}


class MySQLConnector:
    def __init__(self):
        connectTest = self.connect()
        print("Connection to database: " + str(connectTest))

    def init_engine(self):
        try:
            connect_string = 'mysql+mysqlconnector://{}:{}@{}/{}?charset=utf8mb4'.format(config.get("user"),
                                                                                         config.get("password"),
                                                                                         config.get("host"),
                                                                                         config.get("database"),
                                                                                         pool_pre_ping=True)
            print("Engine: " + connect_string)
            sqlengine = db.create_engine(connect_string)
        except:
            print("SQLConnector: Sqlalchemy error. Can't create engine....")
        else:
            dbConnection = sqlengine.connect()
            return dbConnection

    def connect(self):
        try:
            con = mysql.connector.connect(**config)
        except mysql.connector.Error as err:
            if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
                print("Something is wrong with your user name or password")
            elif err.errno == errorcode.ER_BAD_DB_ERROR:
                print("Database does not exist")
                if self.createDB() is True:
                    return self.connect()
            elif err.errno == errorcode.CR_SERVER_GONE_ERROR:
                print("The client couldn't send a question to the server.")
                print("err: " + err)
            elif err.errno == errorcode.CR_SERVER_LOST:
                print(
                    "The client didn't get an error when writing to the server, but it didn't get a full answer (or any answer) to the question.")
                print("err: " + err)
            else:
                print(err)
            return None
        else:
            if con.is_connected():
                db_Info = con.get_server_info()
                print("Connected to MySQL Server version ", db_Info)
            sqlcursor = con.cursor()
            return con

    def createDB(self):
        try:
            mydb = mysql.connector.connect(
                host=config.get("host"),
                user=config.get("user"),
                passwd=config.get("password")
            )
        except mysql.connector.Error as err:
            print(err)
        else:
            sqlcursor = mydb.cursor()
        try:
            sqlcursor.execute('CREATE DATABASE {}'.format(config.get("database")))
        except mysql.connector.Error as err:
            print(err)
            return False
        else:
            print("Database created!")
            return True