首页 > 解决方案 > 在 wordpress 中,更新我的自定义 wordpress 插件时未创建表

问题描述

我正在尝试创建在新更新的插件上创建的新表。但我无法创建表格。基本上,它在更新后停用然后重新激活插件后创建。插件更新后有什么方法可以创建表吗?这是我的数据库代码:

global $wpdb;
define('AUDIO_DB', $wpdb->prefix . 'hbag_audios');
define('FAVOURITE_AUDIO_DB', $wpdb->prefix . 'hbag_audio_favourites');
define('TRACK_RECORD_AUDIO_DB', $wpdb->prefix . 'hbag_audio_track_record');

function hbag_db_create_table()
{
    global $wpdb;
    $sql =
        "CREATE TABLE IF NOT EXISTS " . AUDIO_DB . " (
            aid BIGINT(20) NOT NULL AUTO_INCREMENT ,
            gid BIGINT(20) DEFAULT '0' NOT NULL ,
            filename VARCHAR(255) NOT NULL ,
            picture VARCHAR(255) DEFAULT " . HBAG_URLPATH . "'images/default.png',
            audioURL VARCHAR(255) NOT NULL ,
            title VARCHAR(255) NOT NULL ,
            orders BIGINT(20) NOT NULL ,                    
            PRIMARY KEY  (aid)
            ) ;";

    $favourite =
        "CREATE TABLE IF NOT EXISTS " . FAVOURITE_AUDIO_DB . " (
                    id BIGINT(20) NOT NULL AUTO_INCREMENT ,
                    audio_id BIGINT(20) NOT NULL ,
                    user_id BIGINT(20) NOT NULL ,
                    PRIMARY KEY  (id)
                    ) ;";
    
    $record =
        "CREATE TABLE IF NOT EXISTS " . TRACK_RECORD_AUDIO_DB . " (
                    id BIGINT(20) NOT NULL AUTO_INCREMENT ,
                    audio_id BIGINT(20) NOT NULL ,
                    play_count BIGINT(20) NOT NULL ,
                    user_id BIGINT(20) NOT NULL ,
                    ip_address VARCHAR(255) NOT NULL ,
                    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
                    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
                    PRIMARY KEY (id)
                    ) ;";

    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
    dbDelta( $favourite );
    dbDelta( $record );
}

标签: phpmysqlwordpressplugins

解决方案


推荐阅读