Прежде чем вы все укажете мне на here и here мой бит немного другой. Поэтому я начал получать известную ошибку после перехода на мой производственный сервер.Django Фильтрация MySQL Предупреждения
Джанго/DB/бэкэнды/MySQL/base.py: 86: Внимание: Данные усечены для столбца 'пули' в строке 1
Первое, что я сделал было начать это после того, прибегая к помощи я установил проблема. Чтобы исправить это, я настроил обе модели на max_length из 128 объявлений, а затем обновил таблицы SQL, чтобы они соответствовали ей. Но проблема сохранилась. В некоторой степени уверен, что я на самом деле исправил проблему, я решил, что я просто начну фильтровать их. Поэтому в верхней части моего сценария я разместил это.
# Get rid of the MySQLdb warnings
import warnings
import MySQLdb
with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=MySQLdb.Warning)
И я счастливо отодвинул его на производство. Угадайте, что - вы догадались, что проблема осталась. Ну что теперь. Я быстро теряю уверенность в том, что я действительно исправил проблему, но двойная проверка этого показывает, что все столбцы slug имеют длину 128 символов. Кроме того, я завернул провал в ошибку, если он длиннее 128 и все еще ничего. Так 2 вопроса:
Как я могу прибить какую операцию ослабевает это. то есть, где в моем код является поднятым флагом?
Как я мог отфильтровывать их? Мое исправление не работает? Это действительно предупреждение MySQLdb или предупреждение django.db.mysql.base?
Спасибо и рад, что Django взломал!
Для тех, у кого есть вопросы по структуре ..
CREATE TABLE `people_employee` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`email` varchar(75) DEFAULT NULL,
`location_id` varchar(100) DEFAULT NULL,
`jpeg` longtext,
`first_name` varchar(100) DEFAULT NULL,
`last_name` varchar(100) DEFAULT NULL,
`maildomain` varchar(32) DEFAULT NULL,
`mailserver` varchar(32) DEFAULT NULL,
`mailfile` varchar(64) DEFAULT NULL,
`contractor` tinyint(1) NOT NULL,
`temporary` tinyint(1) NOT NULL,
`formal_name` varchar(100) DEFAULT NULL,
`nickname` varchar(32) DEFAULT NULL,
`cell_phone` varchar(32) DEFAULT NULL,
`office_phone` varchar(32) DEFAULT NULL,
`other_phone` varchar(32) DEFAULT NULL,
`fax` varchar(32) DEFAULT NULL,
`assistant_id` int(11) DEFAULT NULL,
`supervisor_id` int(11) DEFAULT NULL,
`is_supervisor` tinyint(1) NOT NULL,
`department_id` varchar(100) DEFAULT NULL,
`division_id` varchar(100) DEFAULT NULL,
`section_id` varchar(100) DEFAULT NULL,
`job_classification_id` varchar(100) DEFAULT NULL,
`functional_area_id` varchar(100) DEFAULT NULL,
`position_id` varchar(100) DEFAULT NULL,
`notes_url` varchar(200) DEFAULT NULL,
`ldap_active` tinyint(1) NOT NULL,
`notes_active` tinyint(1) NOT NULL,
`created_at` datetime NOT NULL,
`last_update` datetime NOT NULL,
`is_active` tinyint(1) NOT NULL,
`site_id` int(11) NOT NULL,
`slug` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `slug` (`slug`),
KEY `people_employee_location_id` (`location_id`),
KEY `people_employee_assistant_id` (`assistant_id`),
KEY `people_employee_supervisor_id` (`supervisor_id`),
KEY `people_employee_department_id` (`department_id`),
KEY `people_employee_division_id` (`division_id`),
KEY `people_employee_section_id` (`section_id`),
KEY `people_employee_job_classification_id` (`job_classification_id`),
KEY `people_employee_functional_area_id` (`functional_area_id`),
KEY `people_employee_position_id` (`position_id`),
KEY `people_employee_site_id` (`site_id`)
) ENGINE=MyISAM AUTO_INCREMENT=1429 DEFAULT CHARSET=latin1;
И соответствующий models.py.
slug = models.SlugField(max_length=128, editable=False, unique=True)
Надежда, что помогает ..
ли поле (s) эти данные могут поступать из текста имеют ограничения, налагаемые? –
Нет - я устанавливаю пулю на сохранение. Я выталкиваю предупреждение, если длина> 128 (но это не так). – rh0dium
Можете ли вы опубликовать вывод «описать» таблицы (из производственной коробки) и модели, которую вы используете? –