2010-06-16 27 views
46

Tôi đã làm việc để viết SQL để tạo cơ sở dữ liệu MySQL với một số tùy chọn mặc định, bao gồm bộ ký tự và đối chiếu. Có thể đặt công cụ lưu trữ mặc định cho các bảng trong cơ sở dữ liệu này thành InnoDB không?Làm cách nào tôi có thể đặt công cụ lưu trữ mặc định được MySQL sử dụng?

Tôi đã xem qua hướng dẫn sử dụng MySQL 5.1 và tôi đã tìm thấy câu lệnh ENGINE=innodb sẽ được thêm vào câu hỏi CREATE TABLE, nhưng tôi chưa tìm thấy bất kỳ điều gì liên quan đến tuyên bố CREATE DATABASE.

Có cách nào bình thường để thực hiện việc này như là một phần của việc tạo cơ sở dữ liệu hay không cần phải chỉ định trên cơ sở từng bảng?

Trả lời

57

Trích dẫn các Reference Manual (Setting the Storage Engine):

Nếu bạn bỏ qua tùy chọn ENGINE, các công cụ lưu trữ mặc định được sử dụng. Thông thường, đây là MyISAM, nhưng bạn có thể thay đổi nó bằng cách sử dụng tùy chọn --default-storage-engine máy chủ khởi động, hoặc bằng cách thiết lập các tùy chọn default-storage-engine trong file cấu hình my.cnf.

Tùy chọn công cụ lưu trữ mặc định phải là một phần của phần mysqld trong my.cnf;

[mysqld] 
default-storage-engine = innodb 

Bạn cũng có thể muốn thay đổi công cụ lưu trữ mặc định chỉ dành cho phiên hiện tại. Bạn có thể thực hiện việc này bằng cách đặt biến số storage_engine:

SET storage_engine=INNODB; 
+7

Lưu ý, bạn phải thiết lập lại mysql để những thay đổi my.cnf có hiệu lực. Khá rõ ràng nhưng nó đã vấp ngã tôi. –

+0

Đối với thiết lập này trong my.cnf, tôi đoán nó nên đi trong phần [mysqld], hoặc không quan trọng? –

+1

Lưu ý trong mysql> = 5.7.9 bạn phải sử dụng default_storage_engine – mjj1409

5

bạn cần chỉ định công cụ lưu trữ mặc định khi khởi động mysqld. ví dụ:

mysqld --default-storage-engine=InnoDB 

http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_default-storage-engine

+2

Tôi cần phải rõ ràng hơn ... Tôi biết cách chỉ định sử dụng InnoDB từ các câu lệnh CREATE TABLE và sử dụng các tùy chọn khởi động và bằng cách sửa đổi my.cnf. Tôi đặc biệt hỏi về việc liệu nó có thể làm như một phần của câu lệnh CREATE DATABASE trong một kịch bản lệnh SQL hay không. – memilanuk

+0

không, tôi không biết phương pháp làm điều này. – sml

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