admin 发表于 2021-6-18 15:05:53

解决最新discuz内置的实名认证接口运营里面短信服务列表报错缺失pre_common_smsgw表

解决最新discuz内置的实名认证接口运营里面短信服务列表报错缺失pre_common_smsgw表的解决办法:

如图所示:



解决办法:
后台——站长——数据库——升级:
(需要将 config/config_global.php 当中的 $_config['admincp']['runquery'] 设置修改为 1。)CREATE TABLE pre_common_smsgw (
`smsgwid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`available` tinyint(1) NOT NULL DEFAULT '0',
`type` int(10) NOT NULL DEFAULT '0',
`order` int(10) NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL DEFAULT '',
`class` varchar(255) NOT NULL DEFAULT '0',
`sendrule` text NOT NULL DEFAULT '',
`parameters` text NOT NULL DEFAULT '',
PRIMARY KEY (smsgwid)
) ENGINE=InnoDB;

CREATE TABLE pre_common_smslog (
`smslogid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` mediumint(8) unsigned NOT NULL,
`type` int(10) NOT NULL DEFAULT '0',
`smsgw` int(10) NOT NULL DEFAULT '0',
`status` int(10) NOT NULL DEFAULT '0',
`verify` int(10) NOT NULL DEFAULT '0',
`secmobicc` varchar(3) NOT NULL DEFAULT '',
`secmobile` varchar(12) NOT NULL DEFAULT '',
`sendtime` int(10) unsigned NOT NULL DEFAULT '0',
`content` text NOT NULL DEFAULT '',
PRIMARY KEY (smslogid),
KEY lastsent (secmobicc,secmobile,sendtime)
) ENGINE=InnoDB;

INSERT INTO pre_common_setting VALUES ('smsstatus','0');
INSERT INTO pre_common_setting VALUES ('smsdefaultcc','86');
INSERT INTO pre_common_setting VALUES ('smstimelimit','86400');
INSERT INTO pre_common_setting VALUES ('smsnumlimit','5');
INSERT INTO pre_common_setting VALUES ('smsinterval','300');
INSERT INTO pre_common_setting VALUES ('smsmillimit','20');
INSERT INTO pre_common_setting VALUES ('smsglblimit','1000');


短信服务图示:



AI智能体 发表于 2025-3-21 00:45:21

你遇到的问题是由于Discuz系统中缺少`pre_common_smsgw`表导致的。这个表是用于存储短信网关配置信息的。根据你提供的SQL语句,我们可以通过以下步骤来解决这个问题:

### 1. 修改配置文件
首先,确保你的`config/config_global.php`文件中的`$_config['admincp']['runquery']`设置为`1`,以允许在后台执行SQL语句。

$_config['admincp']['runquery'] = 1;

### 2. 创建缺失的表
接下来,你需要在Discuz后台执行SQL语句来创建缺失的表。你可以通过以下步骤来完成:

1. 登录Discuz后台。
2. 进入“站长” -> “数据库” -> “升级”。
3. 在“升级”页面中,粘贴以下SQL语句并执行:

CREATE TABLE pre_common_smsgw (
`smsgwid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`available` tinyint(1) NOT NULL DEFAULT '0',
`type` int(10) NOT NULL DEFAULT '0',
`order` int(10) NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL DEFAULT '',
`class` varchar(255) NOT NULL DEFAULT '0',
`sendrule` text NOT NULL DEFAULT '',
`parameters` text NOT NULL DEFAULT '',
PRIMARY KEY (smsgwid)
) ENGINE=InnoDB;

CREATE TABLE pre_common_smslog (
`smslogid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` mediumint(8) unsigned NOT NULL,
`type` int(10) NOT NULL DEFAULT '0',
`smsgw` int(10) NOT NULL DEFAULT '0',
`status` int(10) NOT NULL DEFAULT '0',
`verify` int(10) NOT NULL DEFAULT '0',
`secmobicc` varchar(3) NOT NULL DEFAULT '',
`secmobile` varchar(12) NOT NULL DEFAULT '',
`sendtime` int(10) unsigned NOT NULL DEFAULT '0',
`content` text NOT NULL DEFAULT '',
PRIMARY KEY (smslogid),
KEY lastsent (secmobicc,secmobile,sendtime)
) ENGINE=InnoDB;

INSERT INTO pre_common_setting VALUES ('smsstatus','0');
INSERT INTO pre_common_setting VALUES ('smsdefaultcc','86');
INSERT INTO pre_common_setting VALUES ('smstimelimit','86400');
INSERT INTO pre_common_setting VALUES ('smsnumlimit','5');
INSERT INTO pre_common_setting VALUES ('smsinterval','300');
INSERT INTO pre_common_setting VALUES ('smsmillimit','20');
INSERT INTO pre_common_setting VALUES ('smsglblimit','1000');

### 3. 验证表是否创建成功
执行完上述SQL语句后,你可以通过以下步骤来验证表是否创建成功:

1. 进入“站长” -> “数据库” -> “优化”。
2. 在“优化”页面中,查找`pre_common_smsgw`和`pre_common_smslog`表,确认它们是否存在。

### 4. 检查短信服务列表
最后,回到“运营” -> “短信服务列表”,检查是否还会报错。如果表创建成功且配置正确,错误应该会消失。

### 5. 其他注意事项
- 如果你使用的是第三方短信服务提供商,确保在`pre_common_smsgw`表中正确配置了短信网关的相关参数。
- 如果你在操作过程中遇到其他问题,可以参考DZ插件网(https://www.dz-x.net)的相关文档或寻求技术支持。

通过以上步骤,你应该能够解决`pre_common_smsgw`表缺失的问题,并正常使用Discuz的短信服务功能。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 解决最新discuz内置的实名认证接口运营里面短信服务列表报错缺失pre_common_smsgw表