是否在使用插件创建表时设置默认数据库存储引擎?

时间:2018-01-11 作者:UncaughtTypeError

参考“上的法典”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, 因为它在存储引擎的初始化中内置了崩溃恢复功能,以及其他优势。

是否可以在初始创建期间明确指定5.6?

1 个回复
最合适的回答,由SO网友:Tofandel 整理而成

MySQL可以做到这一点,而wordpress的dbDelta()

这是您需要更改的线路

$charset_collate = $wpdb->get_charset_collate() . \' engine = innoDB\';
您只需添加engine = innoDB 在SQL查询结束时,MySQL将使用正确的引擎

结束