2009-04-12 25 views
138
create table check2(f1 varchar(20),f2 varchar(20)); 

tạo bảng có collation mặc định latin1_general_ci;Làm cách nào để thay đổi đối chiếu mặc định của bảng?

alter table check2 collate latin1_general_cs; 
show full columns from check2; 

hiển thị collation riêng lẻ của các cột là 'latin1_general_ci'.

Sau đó, tác dụng của lệnh thay đổi bảng là gì?

+0

thể trùng lặp của [Thay đổi cơ sở dữ liệu đối chiếu] (http://stackoverflow.com/questions/5906585/change-database-collation) –

+0

Bạn có thể muốn thay đổi câu trả lời đúng như bản thân mình và nhiều người khác dường như đồng ý rằng điều thứ hai là đúng. –

+1

@GregMiernicki đã hoàn tất. – dharm0us

Trả lời

485

Để thay đổi bộ ký tự mặc định và collation của một bảng bao gồm những cột hiện (chú ý chuyển đổi sang khoản):

alter table <some_table> convert to character set utf8 collate utf8_unicode_ci; 
+24

Chính xác là tôi đang tìm kiếm, cảm ơn. Các câu trả lời khác giải thích vấn đề, nhưng câu trả lời này có giải pháp. – Pablo

+3

Tôi đồng ý. Điều này chắc chắn là những gì tôi tìm kiếm. – James

+0

về chế độ xem thì sao? Tôi cần thay đổi để xem .. –

9

Nó đặt đối chiếu mặc định cho bảng; nếu bạn tạo cột mới, cột đó sẽ được đối chiếu với latin_general_ci - tôi nghĩ vậy. Thử chỉ định collation cho từng cột và xem nó có hoạt động hay không. MySQL có một số hành vi kỳ lạ thực sự liên quan đến cách nó xử lý việc này.

+32

Cuộn xuống để giải quyết sự cố – Moak

29

MySQL có 4 cấp độ đối chiếu: máy chủ, cơ sở dữ liệu, bảng, cột. Nếu bạn thay đổi collation của máy chủ, cơ sở dữ liệu hoặc bảng, bạn không thay đổi cài đặt cho mỗi cột, nhưng bạn thay đổi collations mặc định. Ví dụ: nếu bạn thay đổi collation mặc định của cơ sở dữ liệu, mỗi bảng mới bạn tạo trong cơ sở dữ liệu đó sẽ sử dụng collation đó, và nếu bạn thay đổi collation mặc định của một bảng, mỗi cột bạn tạo trong bảng đó sẽ nhận được collation .

+4

Thực tế, MySQL có ** NĂM ** Mức độ đối chiếu, có cài đặt đối chiếu mặc định ở cấp độ ký tự mà nhiều người quên. – Devy

+2

Cũng có kết nối collation 'hiển thị các biến như" collation% ";', vì vậy tổng là *** SIX ***. –

0

có thể cần phải thay đổi SCHEMA không chỉ bảng

ALTER SCHEMA <table name> DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

(mariaDB 10)

+0

'' thay vì '

' – dnivog

Các vấn đề liên quan