Django вставляет строку "(NULL)" в поля MySQL для Null вместо NULL - PullRequest
0 голосов
/ 11 мая 2011

Я пытаюсь использовать 2-символьное поле, которое можно обнулять для таблицы адресов в MySQL. Когда я запускаю команду manage.py syncdb, она загружает мои данные в таблицу MySQL, но выдает ошибку:

Файл "C: \ Python27 \ lib \ site-packages \ MySQLdb \ connections.py", строка 36, в defaulterrorhandler вызывает повышение errorclass, errorvalue DatabaseError: (1406, "Данные слишком длинные для столбца 'state_province' в строке 1" )

Я обнаружил, что проблема заключается в том, что Django вставляет в таблицу строку "(NULL)" вместо значения NULL для SQL.

В поле "state_province" указано значение null = True, пусто = True в определении модели длиной 2.

Вот примерный набор данных:

 - model: myapp.Address
     pk: 53
     fields:
       street_address: "71 South St"
       city: cityname
       state_province: 
       zip_code: 25455
       countryID: 199
       time_zone: -6
 - model: myapp.Address
     pk: 54
     fields:
       street_address: "123 lake street"
       city: Townname
       state_province: NH
       zip_code: 12345
       countryID: 199
       time_zone: -5

РЕДАКТИРОВАТЬ: я забыл связать, этот вопрос на самом деле именно то, что происходит, но я не знаю, как исправить это поведение в Django, или с чего начать: Вставка null в char (1)

1 Ответ

0 голосов
/ 11 мая 2011

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

Поскольку вы сталкиваетесь с этой ошибкой в ​​файле manage.py, а не в своем собственном коде, я, скорее всего, полагаю, что поле на самом деле не имеет значения NULL для таблицы MySQL, и Django пытается компенсировать его наилучшим образом. может.

Проверьте таблицу MySQL и убедитесь, что в столбце state_province разрешено NULL.

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