ear*_*nni 4 mysql sql ruby-on-rails rails-migrations
对于使用MySQL的应用程序,我在Rails迁移中有以下代码:
execute <<-SQL
ALTER TABLE properties
ADD name VARCHAR(255) NOT NULL;
ALTER TABLE properties
ADD CONSTRAINT fk_properties_name
FOREIGN KEY (name)
REFERENCES valid_property_names (property_name);
SQL
Run Code Online (Sandbox Code Playgroud)
当我运行迁移时,我收到以下错误:
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALTER TABLE properties
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误,如何解决?
这里的问题是当同一个执行块中有多个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
Run Code Online (Sandbox Code Playgroud)
如果您使用PostgreSQL和Rails,这种行为可能会让您感到困惑,因为Postgres适配器没有相同的限制.
| 归档时间: |
|
| 查看次数: |
1222 次 |
| 最近记录: |