Home » [Tech] » [MySQL]

2006.11.12

[ 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でも直っていないようです。
むぅ・・・

Profile

Information