我正在尝试通过运行 MariaDB(10.0.29)的其他服务器上的 CONNECT 引擎从 MySQL 表(5.5.45)中获取 Asterisk CDR 记录。
我可以轻松地创建表之间的连接:
CREATE TABLE `calls` engine=CONNECT table_type=MYSQL
CONNECTION='mysql://user@IP/asteriskcdrdb/calls';
当我运行简单的SELECT * FROM 调用时,一切正常,当我添加一些WHERE 条件时,一切正常。
但是当我添加ORDER BY 列参数时问题就开始了,然后我从 MariaDB 收到了这个错误:
#1032 - Can't find record in 'calls'
我检查了 MySQL 日志、MariaDB 日志——完全没有错误。
我错过了什么?
谢谢!
更新:整个查询很简单:
SELECT * FROM `calls` ORDER BY `calldate`
表结构:
CREATE TABLE `calls` (
`calldate` datetime NOT NULL default '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL default '',
`src` varchar(80) NOT NULL default '',
`dst` varchar(80) NOT NULL default '',
`dcontext` varchar(80) NOT NULL default '',
`channel` varchar(80) NOT NULL default '',
`dstchannel` varchar(80) NOT NULL default '',
`lastapp` varchar(80) NOT NULL default '',
`lastdata` varchar(80) NOT NULL default '',
`duration` int(11) NOT NULL default '0',
`billsec` int(11) NOT NULL default '0',
`disposition` varchar(45) NOT NULL default '',
`amaflags` int(11) NOT NULL default '0',
`accountcode` varchar(20) NOT NULL default '',
`uniqueid` varchar(32) NOT NULL default '',
`userfield` varchar(255) NOT NULL default '',
`recordingfile` varchar(255) NOT NULL default '',
`cnum` varchar(40) NOT NULL default '',
`cnam` varchar(40) NOT NULL default '',
`outbound_cnum` varchar(40) NOT NULL default '',
`outbound_cnam` varchar(40) NOT NULL default '',
`dst_cnam` varchar(40) NOT NULL default '',
`call_charge` float NOT NULL default '0',
`from_did` varchar(30) NOT NULL,
`did` varchar(50) NOT NULL default '',
`user_id` int(8) unsigned default NULL,
`client_id` int(8) unsigned default NULL,
KEY `IDX_UNIQUEID` (`uniqueid`),
KEY `src` (`src`),
KEY `dst` (`dst`),
KEY `calldate` (`calldate`),
KEY `uniqueid` (`uniqueid`),
KEY `userfield` (`userfield`),
KEY `from_did` (`from_did`),
KEY `user_id` (`user_id`),
KEY `client_id` (`client_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
更新#2:更新表名,不要混淆,但这不是问题。CONNECTION 表创建正常。
查询工作:
SELECT * FROM `calls`
查询工作:
SELECT * FROM `calls` WHERE `user_id`=X
查询返回错误:
SELECT * FROM `calls` ORDER BY `calldate`
更新 #3: MySQL 已更新至 veriosn 5.5.45,类型更改为 InnoDB,字符集转换为 UTF8。但没有成功。
问题已解决 好吧,这是 MariaDB 错误,当我更改为 FederatedX 引擎(基本上是 CONNECT 的有限版本)时,一切都按预期工作。