mysql - MariaDB - 连接引擎 - ORDER BY 错误

标签 mysql mariadb asterisk cdr

我正在尝试通过运行 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 column 参数时问题就开始了,然后我从 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 更新至版本 5.5.45,类型更改为 InnoDB,字符集转换为 UTF8。但没有成功。

问题已解决 好吧,这是 MariaDB 的 bug,当我改用 FederatedX 引擎(基本上是 CONNECT 的一点限制版本)时,一切都按预期工作。

最佳答案

在您的查询中,您这样做 SELECT * FROM 调用

但是在你的表结构中你有 创建表cdr

并且都有 calldate 列。检查您是否查询了正确的表。

关于mysql - MariaDB - 连接引擎 - ORDER BY 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42304660/

相关文章:

mysql - 解决外键约束错误的最佳方法是什么

linux - 按住 Red5Phone 上的按钮

azure - 在 Windows Azure 上设置 Asterisk 问题并打开端口范围 10000 :20000

javascript - 监控网页上的 Asterisk 扩展

php - 如何获取登录的用户名?

c# - 无法仅在一台机器上连接到 MySQL 数据库

mysql - 更正联接语法以仅连接表 A 中与表 B 匹配的行

php - 根据select选项从mysql检索数据

php - SQL - 如何获取创建的同一日期的最新数据

mysql - 如何优化此内连接查询以减少查询时间