Das Problem hierbei ist, dass der Rails Mysql2-Datenbankadapter abstürzt, wenn mehrere SQL-Befehle innerhalb desselben Ausführungsblocks vorhanden sind. Folgendes wird problemlos ausgeführt:
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
Dieses Verhalten kann Sie verwirren, wenn Sie PostgreSQL mit Rails verwenden, da der Postgres-Adapter nicht dieselbe Einschränkung hat.