2017-02-17 5 views
0

MariaDB(10.0.29)を実行している他のサーバーのCONNECTエンジンによって、MySQLテーブル(5.5.45)からアスタリスクCDRレコードを取得しようとしています。MariaDB - CONNECT ENGINE - ORDER BYエラー

私は簡単にテーブル間の接続を作成することができます:私は通話からの簡単なSELECT *を実行すると、私はまだいくつかの条件、大丈夫、すべてを追加するとき

CREATE TABLE `calls` engine=CONNECT table_type=MYSQL 
CONNECTION='mysql://[email protected]/asteriskcdrdb/calls'; 

を、すべてのものは、良い作品。私は列パラメータBY ORDERを追加するとき

しかし、問題が起動して、私は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に変更され、charsetがUTF8に変換されました。しかし、成功はありません。

問題が まあを解決し、それはすべてが期待どおりに動作しますが、私はFederatedXエンジンに変更MariaDBのバグ、(基本的にはCONNECTの少し限定バージョンである)です。クエリで

+0

完全なクエリとテーブルの例を追加できますか? –

+0

@DaniloBustos私の元の記事を更新しました、ごめんなさい。 –

+0

テーブル名は 'cdr'ですか? –

答えて

1

あなたはcalls

FROM SELECT *を行いますが、あなたのテーブル構造にあなたは はTABLE cdr

をCREATEし、両方がcalldate列を持っています。正しい表を照会するかどうかを確認してください。

+0

これはAsteriskサーバのテーブルですが、CONNECTを使用している場合、接続文字列 'mysql:// user @ IP/asteriskcdrdb/cdr'から定義が' CREATE TABLE calls'です。 –

+0

cdrがデータベースの場合、SELECT * FROM cdr.calls ORDER BY 'calldate' –

+0

cdrは他のサーバのテーブルです。 CONNECTエンジンはリモートビューに似ています。したがって、ORDER BYが追加されるまでテーブル '呼び出し'を作成します。 –