Ошибка вставки mysql как в python, так и в командной строке mysql
Я хочу вставить некоторые элементы в MySQL DB.
Когда я сделал это в своем скрипте Python, я получил:
Ошибка 1062: повторяющаяся запись "222" для ключа "product_code". product_code - это уникальное поле.
Когда я сделал это в командной строке mysql, я получил:
Ошибка 1205(HY000): превышено время ожидания блокировки; попробуйте перезапустить транзакцию.
Mysql установлен на win32; двигатель стола innodb.
код:
conn = mdb.connect(user = 'root', passwd = '[REMOVED]', db = 'vancl')
cur = conn.cursor()
sql2 = "insert into vancl.vancl_query1(product_code) values('100000')"
print sql2
cur.execute(sql2)
cur.close()
2 ответа
Теперь я воссоздаю таблицу так же, как предыдущий. В скрипте не сообщалось об ошибке, но на самом деле данные не вставляются. В командной строке вставка sql работает отлично.
Ваши данные не будут сохранены, если вы используете механизм транзакций, такой как InnoDB, потому что MySqlDb по умолчанию отключает автоматическую фиксацию. Чтобы сохранить данные в базе данных, вам нужно вызвать commit
conn = mdb.connect(user = 'root', passwd = '[REMOVED]', db = 'vancl')
cur = conn.cursor()
sql2 = "insert into vancl.vancl_query1(product_code) values('100000')"
print sql2
cur.execute(sql2)
//Commit the data
conn.commit()
cur.close()
Это означает, что product_code
столбец имеет уникальное ограничение индекса, помещенное на него. Ограничение уникального индекса сообщает MySQL, что поле не может иметь повторяющихся значений, то есть каждое поле должно быть уникальным. То, что вы получили, это ошибка "повторяющаяся запись" при попытке вставить значение 222 в product_code, когда это значение уже существует где-то в столбце.