| Termin | Definicja |
|---|---|
| Błąd NOT NULL | Błąd NOT NULL sygnalizuje próbę zapisania pustej wartości w kolumnie wymagającej jej obligatoryjnego wypełnienia. Co dokładnie oznacza ograniczenie NOT NULLBłąd NOT NULL pojawia się wtedy, gdy system zarządzania bazą danych próbuje zapisać w kolumnie wartość NULL, mimo że definicja tej kolumny wymaga obecności wartości. NULL nie oznacza zwykłego pustego tekstu ani liczby zero. Jest specjalnym znacznikiem informującym, że wartość jest nieznana, nieustalona albo nie została przekazana. Ograniczenie NOT NULL wymusza więc, aby dla danego rekordu kolumna zawierała jakąś wartość możliwą do zapisania zgodnie z jej typem danych. Ważne jest odróżnienie NULL od pustego łańcucha znaków. Pusty tekst, zapisany jako Operacje INSERT i UPDATE prowadzące do odrzucenia rekorduNajczęstszą przyczyną błędu jest instrukcja INSERT, która pomija kolumnę oznaczoną jako NOT NULL, gdy ta kolumna nie ma wartości domyślnej. Problem występuje także wtedy, gdy aplikacja jawnie przekazuje NULL, na przykład po nieudanym odczycie pola formularza. Analogiczny błąd może powstać podczas UPDATE, jeżeli zmiana istniejącego rekordu ustawia wymaganą kolumnę na NULL. W obu przypadkach baza danych odrzuca operację, zanim zapis naruszyłby określone reguły integralności. Przykładowo, jeżeli tabela zawiera wymagane pole Źródłem NULL może być także wyrażenie obliczeniowe, parametr procedury, wynik odczytu z innej tabeli albo brak danych zwrócony przez operację łączenia. Dlatego analiza samej linii INSERT lub UPDATE nie zawsze wystarcza. Trzeba sprawdzić, skąd pochodzi każda wartość przekazywana do kolumny wymaganej. Ścieżka ustalenia źródła brakującej wartościDiagnostykę należy rozpocząć od ustalenia nazwy tabeli i kolumny wskazanej w komunikacie błędu. Następnie trzeba porównać definicję schematu z kodem, który wykonuje zapis. Warto sprawdzić typ kolumny, obecność NOT NULL, zdefiniowaną wartość DEFAULT oraz to, czy aplikacja korzysta z właściwej wersji schematu. Częstym problemem jest wdrożenie nowej, wymaganej kolumny bez jednoczesnej aktualizacji formularza, importu danych, mapowania obiektu albo skryptu migracyjnego. W aplikacji należy prześledzić cały przepływ danych: od pola wejściowego, przez walidację i konwersję typu, aż do parametrów zapytania. Puste pole formularza może zostać zamienione na NULL, a nie na pusty tekst. Nieudana konwersja tekstu na datę lub liczbę może również zwrócić brak wartości, który później trafia do instrukcji zapisu. Przy integracjach trzeba dodatkowo sprawdzić mapowanie nazw pól, ponieważ brak właściwości w danych JSON, CSV lub XML może zostać potraktowany jako NULL. Naprawa powinna odpowiadać znaczeniu danych. Jeżeli wartość jest obowiązkowa, należy poprawić walidację i przekazywać ją przed wykonaniem zapisu. Jeżeli brak wartości jest poprawnym stanem biznesowym, właściwym rozwiązaniem może być zmiana schematu i usunięcie NOT NULL, ale dopiero po sprawdzeniu wszystkich zapytań, raportów i zależności korzystających z tej kolumny. Ustawienie przypadkowej wartości zastępczej tylko po to, aby zniknął komunikat, może zafałszować dane i utrudnić późniejszą analizę. Błąd NOT NULL w programie działającym na komputerzeNa laptopie lub komputerze stacjonarnym komunikat NOT NULL może pojawić się w programie korzystającym z lokalnej bazy danych albo z aplikacji zapisującej informacje przez interfejs sieciowy. Sam komunikat nie wskazuje jeszcze na uszkodzenie sprzętu. Najpierw należy sprawdzić log aplikacji, moment wystąpienia błędu, wykonywaną operację oraz zgodność wersji programu ze schematem danych. Pomocne jest także odtworzenie problemu na konkretnym formularzu lub przy konkretnym imporcie, bez modyfikowania danych produkcyjnych. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i ich oprogramowania, dlatego przy takim zgłoszeniu istotne jest przekazanie pełnego komunikatu błędu oraz informacji, po jakiej czynności pojawia się problem. Pozwala to odróżnić błąd danych wejściowych, niezgodność programu z bazą i problem z konfiguracją od awarii podzespołu. Wprowadzanie zmian w tabelach lub usuwanie ograniczenia NOT NULL bez kopii danych i znajomości zależności może doprowadzić do kolejnych błędów albo utraty spójności zapisów. |