2010-01-25 10 views
14

Trong 5.x mysql Whats sự khác biệt nếu tôi làm điều gì đó như thế này:Tạo bảng mysql với bộ ký tự mặc định rõ ràng, nếu tôi không làm gì?

CREATE TABLE aTable (
    id      BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    aNumber   bigint(20) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8; 

với điều này:

CREATE TABLE aTable (
    id      BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    aNumber   bigint(20) DEFAULT NULL 
) ENGINE=InnoDB CHARACTER SET=utf8; 

Thông báo Tôi không xác định nhân vật thiết lập như mặc định trong một đầu tiên. Tôi không thể tìm thấy bất cứ điều gì trong các tài liệu mysql.

+4

Xin lưu ý rằng bộ ký tự 'utf8' của MySQL bị hỏng. [Sử dụng MySQL 'utf8mb4' nếu bạn muốn hỗ trợ Unicode đầy đủ] (https://stijndewitt.wordpress.com/2015/06/15/use-mysql-utf8mb4-if-you-want-full-unicode-support/). –

Trả lời

19

Từ DEFAULT là tùy chọn ở đó - do đó, hai chữ số tương đương, nghĩa là chúng đặt bộ ký tự mặc định cho bảng.

Xem tài liệu MySQL cho CREATE TABLE. Đây là bit liên quan:

table_option: 
    ENGINE [=] engine_name 
    ... other options ... 
    | [DEFAULT] CHARACTER SET [=] charset_name 
    ... more options ... 

Bạn có thể xác nhận điều này bằng cách sử dụng lệnh SHOW CREATE TABLE.

9

Có 4 mức cài đặt mặc định trong MySQL: máy chủ, cơ sở dữ liệu, bảng và cột. Sử dụng các giá trị mặc định ở mức thấp hơn, bạn có thể ghi đè lên các giá trị mặc định cao hơn.

Nếu bạn thay đổi bảng có bộ ký tự mặc định được đặt thành thứ khác với cơ sở dữ liệu đã đặt, mặc định bảng sẽ ghi đè mặc định db.

+0

Upvote cho lời giải thích của bốn cấp độ. Tôi đã có cơ sở dữ liệu và tập hợp cột, nhưng không phải bảng. Cảm ơn! – HoldOffHunger