Intenta esto.
El problema puede ser que algun valor que contiene pasillo en ejemplares no este en ubicaciones.
Pero en qualquier caso te interesa la clave foranea compuesta puesto que lo que no puede haber en ejemplares es un par pasillo/estanteria que no exista en ubicaciones. Si controlas por separado puede que estes guardando un ejemplar en un pasillo que exista y en una estanteria que tambien exista pero en otro pasillo.
Otra posibilidad para no trabajar con claves compuestas es agregar un id autoincremental como pk de ubicaciones y un indice unico compuesto por pasillo/estanteria y luego en ejemplares vincular por el id.