ALTER TABLE - Zmień nazwę kolumny

102

To doprowadza mnie do szału!

Chcę zmienić nazwę kolumny z read-more na read_more w mojej tabeli blogów

Próbowałem tego wszystkiego:

  ALTER TABLE blog RENAME COLUMN read-more to read_more;
  ALTER TABLE blog CHANGE COLUMN 'read-more' 'read_more' VARCHAR(255) NOT NULL;

I zawsze to rozumiem!

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLUMN read-more to read_more' at line 1

Używam MySQL 5.5

Bojan
źródło

Odpowiedzi:

139

Prawidłowa składnia jest zbliżona do drugiej próby, ale musisz uciec od nazw kolumn za pomocą znaków wstecz, a nie pojedynczych cudzysłowów:

ALTER TABLE `blog` CHANGE COLUMN `read-more` `read_more` VARCHAR(255) NOT NULL;
GhostGambler
źródło
18
ALTER TABLE `blog` CHANGE  `read-more` `read_more` VARCHAR(255) NOT NULL;

Powyższe zapytanie jest poprawne i nie ma potrzeby używania słowa kluczowego „kolumna” oraz cudzysłowu wokół nazwy tabeli i kolumny, jeśli korzystasz z bazy danych mysql:

ALTER TABLE blog CHANGE read-more read_more VARCHAR(255) NOT NULL;
Rahul
źródło
3

Oto, co zadziałało dla mnie:

ALTER TABLE vm_list CHANGE `vm_notes]` vm_notes VARCHAR(255); 

Query OK, 0 rows affected (0.01 sec) 
Records: 0  Duplicates: 0  Warnings: 0

Tak, jakoś mam tam kolumnę o nazwie „vm_notes]”.

Boris Epstein
źródło