[ MySQL] localhostのデータベースに対してfederated tableが作れない件
将来的にデータベースを分散させることを考えて複数のデータベースにデータの種別で分けるよう設計したのですが、こうすると当然joinできなくなります。
まぁ一回一回fetchしてもいいのですが、せっかく便利なDBICのsearch_relatedなんかが使えなくなるのが心苦しかったのでMySQLのfederated tableを試してみることにしました。
理想的にはこんな感じ。
use account; create table users ( id int not null auto_increment, name varchar(16) not null, ... ); use hoge; create table users ( id int not null auto_increment, name varchar(16) not null, ... ) engine=federated connection='mysql://root@localhost:3306/account/users'; create table foo ( id int not null auto_increment, user int not null, bar text, ... );
ところが同じデータベース内でのfederated tableは無理かなと思ったのですが同じホストでもダメなようです。
create database test1; use test1; create table test (x int); create database test2; use test2; create table test (x int) engine=federated connection='mysql://root@localhost:3306/account/users'; # 30秒ほど待たされて ERROR 1434 (HY000) at line 45: Can't create federated table. Foreign data src error: error: 1159 ''
ちがうホストやポートが異なれば大丈夫なようです。
要はソケットが違えばいいということらしいです。
でも1台のホストでテストするのが非常に面倒くさいです。
一応バグとして上がっているようです。
MySQL Bugs: #18287: create federated table always times out, error 1159 ' '
sennaのmysql bindingをテストしている都合上5.0.24aで試したのですが5.0.27でも直っていないようです。
むぅ・・・
