这里的问题是,当同一执行块中有多个sql命令时,Rails MysqL2数据库适配器就会阻塞。以下将正常运行:
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
如果您是将Postgresql与Rails一起使用,则此行为可能会使您感到困惑,因为Postgres适配器没有相同的限制。