Le problème ici est que l'adaptateur de base de données Rails Mysql2 s'étouffe lorsqu'il existe plusieurs commandes SQL dans le même bloc d'exécution. Les éléments suivants fonctionneront correctement :
execute <<-SQL
ALTER TABLE properties
ADD name VARCHAR(255) NOT NULL;
SQL
execute <<-SQL
ALTER TABLE properties
ADD CONSTRAINT fk_properties_name
FOREIGN KEY (name)
REFERENCES valid_property_names (property_name);
SQL
Ce comportement peut vous dérouter si vous venez d'utiliser PostgreSQL avec Rails puisque l'adaptateur Postgres n'a pas la même limitation.