Zanim wszyscy wskazaliście mi here imoje inne. Więc zacząłem otrzymywać słynny błąd po przejściu na mój serwer produkcyjny.Django Filtrowanie ostrzeżeń MySQL
django/db/backends/mysql/base.py: 86: Uwaga: Dane obcinane na kolumnie 'ślimak' w rzędzie 1
Pierwszą czynnością było rozpocząć guglanie to po tym jak ustalona problem. Aby to naprawić, zmodyfikowałem oba modele, aby uzyskać maksymalną długość 128 reklam, a następnie zaktualizowałem tabele SQL, aby je dopasować. Ale problem utrzymywał się. Nieco pewny, że naprawiłem problem, pomyślałem, że równie dobrze zacznę je filtrować. Na samym szczycie mojego skryptu umieściłem to.
# Get rid of the MySQLdb warnings
import warnings
import MySQLdb
with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=MySQLdb.Warning)
I z przyjemnością przekazałem to do produkcji. Zgadnij co - zgadłeś, że problem pozostał. I co teraz. Szybko tracę pewność, że faktycznie naprawiłem problem, ale podwójne sprawdzenie tego pokazuje, że wszystkie kolumny ślimaków mają długość 128 znaków. Co więcej, zawinęłam się do błędu, jeśli jest dłuższa niż 128 i nadal nic. Więc 2 pytania:
Jak mogę paznokci w dół, co operacja jest słabnącym to. tj. gdzie w moim kodzie flaga jest podnoszona?
Jak mogę je odfiltrować? Moja poprawka nie działa? Czy to naprawdę ostrzeżenie MySQLdb lub django.db.mysql.base?
Dzięki i radosne hakowanie Django!
Dla tych, którzy mają pytania dotyczące struktury ..
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;
a odpowiednim models.py.
slug = models.SlugField(max_length=128, editable=False, unique=True)
nadzieję, że pomoże ..
Czy pole (s) dane te mogą pochodzić z zostały nałożone limity tekstowe? –
Nie - ustawiam slug przy zapisie. Wyciągam ostrzeżenie, jeśli długość wynosi> 128 (ale to nie jest ...). – rh0dium
Czy możesz opublikować dane wyjściowe tabeli "opisz" (z pola produkcyjnego) i Modelu, którego używasz? –