Saya mendapat kesalahan berikut saat mencoba mengubah tipe data kolom dan menetapkan nilai default baru:
ALTER TABLE foobar_data ALTER COLUMN col VARCHAR(255) NOT NULL SET DEFAULT '{}';
GALAT 1064 (42000): Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MySQL Anda untuk sintaks yang tepat untuk digunakan di dekat 'VARCHAR (255) JANGAN NULL SET DEFAULT' {} '' di baris 1
Jawaban:
Kemungkinan kedua yang melakukan hal yang sama (terima kasih kepada juergen_d):
sumber
column
opsional. Anda bisa saja menggunakanALTER TABLE foobar_data MODIFY col VARCHAR(255) NOT NULL DEFAULT '{}';
atauALTER TABLE foobar_data CHANGE col col VARCHAR(255) NOT NULL DEFAULT '{}';
hasilnya akan sama.{}
.col
di sebelah satu sama lain benar? (seperti inicol col
)DEFAULT
nilainya. Ini akan memproses semua baris tabel secara gratis (sangat panjang pada tabel besar). GunakanALTER TABLE <table_name> ALTER COLUMN <column_name> SET DEFAULT <value>
yang instan.Sebagai tindak lanjut, jika Anda hanya ingin menetapkan default, cukup yakin Anda dapat menggunakan sintaks ALTER .. SET. Hanya saja, jangan menaruh semua barang lain di sana. Jika Anda akan memasukkan sisa definisi kolom, gunakan sintaks MODIFY atau CHANGE sesuai jawaban yang diterima.
Lagi pula, sintaks ALTER untuk mengatur default kolom, (karena itulah yang saya cari ketika saya datang ke sini):
Untuk yang 'literal' juga bisa berupa angka (misalnya
...SET DEFAULT 0
). Saya belum mencobanya dengan...SET DEFAULT CURRENT_TIMESTAMP
tetapi mengapa tidak eh?sumber
ALTER TABLE table_name MODIFY COLUMN column_name TIMESTAMP NOT NULL DEFAULT current_timestamp;
DEFAULT
nilainya.NOW()
ataucurrent_timestamp()
@Malaise @NereisJika Anda ingin menambahkan nilai default untuk kolom yang sudah dibuat, ini berfungsi untuk saya:
sumber
Untuk DEFAULT CURRENT_TIMESTAMP:
Harap catat deklarasi nama kolom ganda
Menghapus DEFAULT CURRENT_TIMESTAMP:
sumber
Jawaban yang diterima berfungsi dengan baik.
Dalam hal penggunaan kesalahan nilai NULL , pada nilai NULL , perbarui semua nilai null ke nilai default di kolom itu dan kemudian coba lakukan perubahan.
sumber
Jika hal di atas tidak bekerja untuk Anda (yaitu: Anda bekerja dengan SQL atau Azure baru ) coba yang berikut:
1) jatuhkan batasan kolom yang ada (jika ada):
2) buat yang baru:
sumber
Coba ini
seperti ini
sumber