Wystąpił następujący błąd podczas próby zmiany typu danych kolumny i ustawienia nowej wartości domyślnej:
ALTER TABLE foobar_data ALTER COLUMN col VARCHAR(255) NOT NULL SET DEFAULT '{}';
BŁĄD 1064 (42000): Wystąpił błąd w składni SQL; sprawdź instrukcję, która odpowiada twojej wersji serwera MySQL, czy ma prawidłową składnię do użycia w pobliżu „VARCHAR (255) NOT NULL SET DEFAULT” {} ”w wierszu 1
Odpowiedzi:
Druga możliwość, która robi to samo (dzięki juergen_d):
źródło
column
Jest opcjonalne. Możesz po prostu użyćALTER TABLE foobar_data MODIFY col VARCHAR(255) NOT NULL DEFAULT '{}';
lub,ALTER TABLE foobar_data CHANGE col col VARCHAR(255) NOT NULL DEFAULT '{}';
a wynik będzie taki sam.{}
.col
s obok siebie jest poprawne? (jak tocol col
)DEFAULT
wartość. Spowoduje to przetworzenie wszystkich wierszy tabeli na nic (bardzo długie na dużych stołach). Użyj zamiast tego,ALTER TABLE <table_name> ALTER COLUMN <column_name> SET DEFAULT <value>
co jest natychmiastowe.W ramach kontynuacji, jeśli chcesz ustawić wartość domyślną, możesz być pewien, że możesz użyć składni ALTER .. SET. Po prostu nie umieszczaj tam wszystkich innych rzeczy. Jeśli chcesz wstawić resztę definicji kolumny, użyj składni MODIFY lub CHANGE zgodnie z przyjętą odpowiedzią.
W każdym razie, składnia ALTER służąca do ustawiania domyślnej kolumny (ponieważ tego właśnie szukałam, kiedy tu przyszłam):
Dla których „literał” może być również liczbą (np
...SET DEFAULT 0
.). Nie próbowałem tego,...SET DEFAULT CURRENT_TIMESTAMP
ale dlaczego nie?źródło
ALTER TABLE table_name MODIFY COLUMN column_name TIMESTAMP NOT NULL DEFAULT current_timestamp;
DEFAULT
wartości.NOW()
lubcurrent_timestamp()
@Malaise @NereisJeśli chcesz dodać wartość domyślną do już utworzonej kolumny, działa to dla mnie:
źródło
W przypadku DOMYŚLNEJ CURRENT_TIMESTAMP:
Uwaga: deklaracja podwójnej nazwy kolumny
Usuwanie DEFAULT CURRENT_TIMESTAMP:
źródło
Zaakceptowana odpowiedź działa dobrze.
W przypadku nieprawidłowego użycia błędu wartości NULL, włącz wartościach NULL zaktualizuj wszystkie wartości null do wartości domyślnej w tej kolumnie, a następnie spróbuj wykonać zmianę.
źródło
W przypadku, gdy powyższe nie działa dla Ciebie (tj .: pracujesz z nowym SQL lub Azure ), spróbuj wykonać następujące czynności:
1) usuń istniejące ograniczenie kolumny (jeśli istnieje):
2) utwórz nowy:
źródło
Spróbuj tego
lubię to
źródło