使用 daloradius 配置 freeradius 后出现以下错误。
ERROR: (3) sql: ERROR: rlm_sql_mysql: ERROR 1054 (Unknown column 'acctupdatetime' in 'field list')
Radius 服务器计费似乎不起作用。
使用了 daloradius github 中发布的 SQL 模式,但会计似乎失败了。
https://github.com/lirantal/daloradius/tree/master/contrib/db
我用来安装freeradius+daloradius的指南:
https://computingforgeeks.com/install-freeradius-and-daloradius-on-debian/
答案1
解决方案
问题是缺少一些表字段。
daloradius 中的 SQL 模式未创建所有字段。要修复此错误,您必须手动添加缺失的 SQL 字段。
跑步
mysql -u root -p radius
删除导致问题的表
DROP TABLE radacct;
- 添加以下记录可修复该问题。
CREATE TABLE radacct (
radacctid bigint(21) NOT NULL auto_increment,
acctsessionid varchar(64) NOT NULL default '',
acctuniqueid varchar(32) NOT NULL default '',
username varchar(64) NOT NULL default '',
groupname varchar(64) NOT NULL default '',
realm varchar(64) default '',
nasipaddress varchar(15) NOT NULL default '',
nasportid varchar(15) default NULL,
nasporttype varchar(32) default NULL,
acctstarttime datetime NULL default NULL,
acctupdatetime datetime NULL default NULL,
acctstoptime datetime NULL default NULL,
acctinterval int(12) default NULL,
acctsessiontime int(12) unsigned default NULL,
acctauthentic varchar(32) default NULL,
connectinfo_start varchar(50) default NULL,
connectinfo_stop varchar(50) default NULL,
acctinputoctets bigint(20) default NULL,
acctoutputoctets bigint(20) default NULL,
calledstationid varchar(50) NOT NULL default '',
callingstationid varchar(50) NOT NULL default '',
acctterminatecause varchar(32) NOT NULL default '',
servicetype varchar(32) default NULL,
framedprotocol varchar(32) default NULL,
framedipv6address varchar(32) default NULL,
framedipv6prefix varchar(32) default NULL,
framedinterfaceid varchar(32) default NULL,
delegatedipv6prefix varchar(32) default NULL,
framedipaddress varchar(15) NOT NULL default '',
PRIMARY KEY (radacctid),
UNIQUE KEY acctuniqueid (acctuniqueid),
KEY username (username),
KEY framedipaddress (framedipaddress),
KEY acctsessionid (acctsessionid),
KEY acctsessiontime (acctsessiontime),
KEY acctstarttime (acctstarttime),
KEY acctinterval (acctinterval),
KEY acctstoptime (acctstoptime),
KEY nasipaddress (nasipaddress)
) ENGINE = INNODB;
注意:更多帮助https://sourceforge.net/p/daloradius/discussion/684102/thread/56b11486/?limit=25然而就我而言,所提出的解决方案并没有包含所有必要的字段。