Ruby on Rails Foreigner Plugin não está funcionando para o SQL Server
-
25-09-2019 - |
Pergunta
Bem, agora que finalmente tenho minhas coisas estúpidas do ODBC configuradas, peguei um arquivo esquema.rb que passei de um banco de dados do Postgres e fiz um db:schema:load
nele em um projeto Rails configurado para o SQL Server.
Bem, ele configura todo o esquema no banco de dados do SQL Server, exceto por um menor detalhe: nenhuma chave estrangeira é criada.
O comando RAKE não mostra erros e diz que está adicionando teclas estrangeiras. Mas eles realmente não são adicionados. Esta é a última parte do comando:
-- add_foreign_key("workhistoryform", "form", {:name=>"workhistoryform_form_rid_fkey", :column=>"form_rid", :primary_key=>"form_rid"})
-> 0.0002s
-- initialize_schema_migrations_table()
-> 0.0092s
-- assume_migrated_upto_version(0)
-> 0.0942s
[earlz@earlzarch avp_msql_migrations]$
Então qual é o problema? O plugin estrangeiro não funciona no SQL Server? Se não fosse, eu esperaria ver um erro ou algo assim ...
Solução
Ok, eu consertei. Bem, invadiu de qualquer maneira. O estrangeiro na verdade não possui suporte para o SQL Server, mas está próximo o suficiente para SQL_2003 que funciona (menos removendo chaves estrangeiras e detectando o esquema)
Eu fiz uma postagem sobre isso no meu blog que basicamente se resumia a adicionar A à lista de adaptadores e criar um novo adaptador muito simples para o SQL Server (use o adaptador PostgreSQL como modelo). (modificando a jóia estrangeira)
Outras dicas
Eu consertei isso corretamente e enviei uma solicitação de tração ao autor de estrangeiros. Enquanto isso, você pode usar a versão do meu repositório: https://github.com/cjheath/foreigner