Внешние ключи в сабжевых таблицах не умеют работать с несколькими базами или это все в драйверах рук дело?
Если последнее, подскажите что не так делаю,
типы данных одинаковые int unsigned
если поле не primary key завожу на него index и творю
foreign key (fld) references `db`.`tbl`(id) on delete cascade
fld - индекс в дочерней таблице, id соответственно примари кей в родительской.