Consulte http://dev.mysql. com/doc/refman/5.6/en/create-table-foreign-keys.html
Si es bastante difícil adivinar ya que no proporcionaste las definiciones para los roles
y permissions
tablas pero parafraseando el doc...
- ... para tener una clave foránea en una columna, debe tener un índice en la columna "objetivo".
- ... para tener una clave foránea en una columna, las columnas "origen" y "destino" deben tienen el mismo tipo (incluido el mismo tamaño, si corresponde).
- ... para tener una clave foránea en una columna, ambas tablas deben utilice el motor InnoDB.