参考“上的法典”Creating Tables with Plugins“,我找不到有关在创建过程中指定表存储引擎的任何参考。
考虑以下函数以最初创建表:
public function xy_plugin_install() {
global $wpdb;
global $xy_db_version;
$table_name = $wpdb->prefix . \'xy_foobar\';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
email varchar(55) DEFAULT \'\' NOT NULL,
postcode varchar(55) DEFAULT \'\' NOT NULL,
message text NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once( ABSPATH . \'wp-admin/includes/upgrade.php\' );
dbDelta( $sql );
add_option( \'xy_db_version\', $xy_db_version );
}
根据上述内容,表格设置为
MyISAM
默认情况下。
作为首选项,该表应设置为InnoDB
如果MySQL版本大于或等于5.6
, 因为它在存储引擎的初始化中内置了崩溃恢复功能,以及其他优势。
是否可以在初始创建期间明确指定还有,是否需要包含一个条件检查来确定MySQLver是否大于或等于ver5.6
?
最合适的回答,由SO网友:Tofandel 整理而成
MySQL可以做到这一点,而wordpress的dbDelta()
这是您需要更改的线路
$charset_collate = $wpdb->get_charset_collate() . \' engine = innoDB\';
您只需添加
engine = innoDB
在SQL查询结束时,MySQL将使用正确的引擎