2017-02-17 25 views
0

我試圖通過運行MariaDB(10.0.29)的其他服務器上的CONNECT引擎從MySQL表(5.5.45)中獲取Asterisk CDR記錄。MariaDB - CONNECT ENGINE - ORDER BY error

我可以輕鬆地創建表之間的連接:

CREATE TABLE `calls` engine=CONNECT table_type=MYSQL 
CONNECTION='mysql://[email protected]/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` 

Update#3: MySQL已更新爲veriosn 5.5.45,類型更改爲InnoDB,字符集轉換爲UTF8。但沒有成功。

問題解決了 嗯,這是MariaDB的錯誤,當我改FederatedX引擎(這基本上是CONNECT的點點有限的版本),一切正常。

+0

你可以添加完整的查詢和表的例子嗎? –

+0

@DaniloBustos更新了我原來的帖子,對不起。 –

+0

表名是'cdr'? –

回答

1

在你查詢你做 SELECT * FROM calls

但在你的表結構,必須 CREATE TABLE cdr

並且都具有calldate列。檢查你是否查詢正確的表格。

+0

這是Asterisk服務器上的表,但是當我使用CONNECT時,在定義中是'CREATE TABLE calls' ...來自連接字符串'mysql:// user @ IP/asteriskcdrdb/cdr' –

+0

如果cdr是數據庫,請執行SELECT * FROM cdr.calls ORDER BY'calldate' –

+0

cdr是其他服務器上的表。 CONNECT引擎就像遠程視圖。所以你創建了表格'調用',它可以工作,直到添加了ORDER BY。 –