php - 在 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 );
}
解决方案
推荐阅读
- java - Hibernate 扩展实体以使用附加连接进行读取
- sql - 查询执行时间过长
- java - 为什么 hashCode() 函数会产生错误
- java - 将 awssdk s3 v2 与 GCS 和 Minio 网关一起使用时出现 Etag 解码错误
- oracle - 为什么我得到一个 ORA-24247 代码在函数中但不在匿名块中?
- react-native - 如何使用 redux saga 实现 redux 持久化?
- python-3.x - 使用 Machin 方法估计 pi 的准确性问题
- javascript - 如何使已转换为 JSON 的 Excel 文件自动加载到表(DataTables)
- django - 在 Django Forms 中,如何向 SelectedMultiple 控件添加过滤器?
- java - 为什么 spring boot 要求我定义一个 'entityManagerFactory' bean?