MySQL команды не синхронизированы Python - PullRequest
0 голосов
/ 01 января 2019

Я пытаюсь инициализировать свою базу данных с MySQL и Python MySQL коннектором.После запуска приведенного ниже кода я получаю следующее исключение:

mysql.connector.errors.DatabaseError: 2014 (HY000): команды не синхронизированы;Вы не можете выполнить эту команду сейчас

Я пробовал несколько вещей, включая фиксацию объекта подключения, хотя у меня ничего не получалось.

   def initialization():
        cnx = mysql.connector.connect(user="root", password="xxxxxxxxx", host='127.0.0.1')
        cursor = cnx.cursor()
        cursor.execute("CREATE DATABASE IF NOT EXISTS izugitdb;")
        cursor.execute("USE izugitdb;")
        cursor.execute("CREATE TABLE IF NOT EXISTS employee_users (user_id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(40) NOT NULL, password VARCHAR(40) NOT NULL,isadmin TINYINT(1) DEFAULT 0 NOT NULL);")
        cursor.execute("CREATE TABLE IF NOT EXISTS clients (client_id INT AUTO_INCREMENT PRIMARY KEY,client_name VARCHAR(255) NOT NULL); ENGINE = InnoDB;")
        cursor.execute("CREATE TABLE IF NOT EXISTS clients_workers (id INT AUTO_INCREMENT PRIMARY KEY, worker_id INT ,worker_name VARCHAR(255) NOT NULL, client_id INT);")

Ответы [ 2 ]

0 голосов
/ 01 января 2019

Я обнаружил, что эта строка

cursor.execute("CREATE TABLE IF NOT EXISTS clients (client_id INT AUTO_INCREMENT PRIMARY KEY,client_name VARCHAR(255) NOT NULL); ENGINE = InnoDB;")

создает все проблемы, ENGINE = InnoDB; не может быть одновременно выполнять Спасибо

0 голосов
/ 01 января 2019

Команды не синхронизированы

Если вы получаете команды из синхронизации;вы не можете сейчас запустить эту команду в своем клиентском коде, вы вызываете клиентские функции в неправильном порядке.

Это может произойти, например, если вы используете mysql_use_result () и пытаетесь выполнить новый запроспрежде чем вы вызвали mysql_free_result ().Это также может произойти, если вы попытаетесь выполнить два запроса, которые возвращают данные без вызова mysql_use_result () или mysql_store_result () между ними.

Возможно, команды в вашем случае вы пытались использовать их непосредственно вMySQL?и быть в состоянии повторить ошибку?

Или попробуйте закрыть курсор после каждой команды, а затем и снова открыть его, прежде чем использовать его для выполнения другого оператора:

cursor.close() 

cursor = cnx.cursor() 

PS.Хороший улов @Nikos Steiakakis, я отредактировал и заштриховал ваш пароль и, надеюсь, он все равно не был реальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...