ここでの問題は、同じ実行ブロック内に複数のSQLコマンドがある場合、RailsMysql2データベースアダプタがチョークすることです。以下は正常に実行されます:
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
Postgresアダプタには同じ制限がないため、RailsでPostgreSQLを使用している場合、この動作は混乱を招く可能性があります。