База данных не обновляет автоматически с MySQL и Python

Примечание: использование неопределенной константы XXX - предполагается, что «XXX»

, или в PHP 7.2 или новее:

Предупреждение: использование неопределенной константы XXX - предполагаемый «XXX» ( это вызовет ошибку в будущей версии PHP)

Это уведомление возникает, когда токен используется в коде и представляется константой, но константа с этим именем не определена.

Одной из наиболее распространенных причин этого уведомления является отказ от цитирования строки, используемой в качестве ассоциативного массива.

Например:

// Wrong
echo $array[key];

// Right
echo $array['key'];

Другие распространенные причины отсутствует значок $ (доллар) перед именем переменной:

// Wrong
echo varName;

// Right
echo $varName;

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

// Wrong
$foo = fasle;

// Right
$foo = false;

Он также может быть признаком того, что необходимое расширение или библиотека PHP отсутствует при попытке доступа к константе, определенной этой библиотекой.

Вопросы, относящиеся:

37
задан Air 16 April 2015 в 23:53
поделиться

4 ответа

Я не уверен, но я собираюсь предположить, что Вы используете таблицу INNODB, и Вы не сделали фиксации. Я полагаю, что MySQLdb включают транзакции автоматически.

Вызов conn.commit() прежде, чем звонить close.

От FAQ: Запуск с 1.2.0, MySQLdb отключает автоматическую фиксацию значением по умолчанию

62
ответ дан davidism 27 November 2019 в 04:16
поделиться

MySQLdb имеет автоматическую фиксацию прочь по умолчанию, которая может сбивать с толку сначала. Ваше соединение существует в своей собственной транзакции, и Вы не будете в состоянии видеть изменения, которые Вы вносите от других соединений, пока Вы не фиксируете ту транзакцию.

можно или сделать conn.commit() после оператора обновления, как другие указали или отключают эту функциональность в целом установкой conn.autocommit(True) прямо после создания объекта соединения.

28
ответ дан davidism 27 November 2019 в 04:16
поделиться

Необходимо фиксировать изменения вручную или включить автоматическую фиксацию.

причина ВЫБОР возвращает измененный (но не сохранился), данные - то, потому что соединение находится все еще в той же транзакции.

8
ответ дан muhuk 27 November 2019 в 04:16
поделиться

Я нашел, что коннектор Python автоматически выключает автоматическую фиксацию, и там, кажется, не способ изменить это поведение. Конечно, можно снова включить его, но тогда рассмотрение журналов запросов, это глупо делает два бессмысленных запроса после подключения для выключения автоматической фиксации затем обратно на.

1
ответ дан MarkR 27 November 2019 в 04:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: