2016-03-21 5 views
1

Ich versuche, Ecto an eine bestehende SqlServer-Datenbank anzuhängen. SqlServer möchte das Primärschlüsselfeld automatisch ausfüllen, daher kann ich keinen Wert angeben, wenn ich eine Einfügung mache. Ich hatte ursprünglich das Feld wie erforderlich markiert, aber selbst nachdem ich das entfernt habe, hat die INSERT-Abfrage, die es erstellt, noch dieses Feld und versucht,: nil hineinzulegen. Ich bekomme immer noch einen Fehler. Gibt es eine bestimmte Art und Weise, wie ich das Modell einrichten soll oder etwas, das ich an den INSERT weitergeben soll, damit es funktioniert? Wie fügen Sie in SqlServer ein?Wie fügen Sie in eine SqlServer-Tabelle mit Ecto ein?

Ich benutze den Tds_ecto Adapter. Der Fehler, den ich bekomme, ist:

Cannot insert explicit value for identity column in table 'TextMessageHistory' when IDENTITY_INSERT is set to OFF 
+0

welchen DB-Adapter verwenden Sie? – Tetaxa

+0

Ich verwende den Tds_ecto-Adapter. Gibt es andere SqlServer Adapter? – Matt

+0

Klingt, als würdest du Spaß machen Matt! –

Antwort

3

Sieht aus wie das Problem war mit, wie ich den Primärschlüssel in meinem Modell erklärte. Ich hatte verwendet:

@primary_key {:TextMessageHistoryId, :id, []} 

aber dann verstand es nicht, dass die Datenbank den Schlüssel automatisch generieren würde. Also habe ich es geändert in:

@primary_key {:TextMessageHistoryId, :id, autogenerate: true} 

Und dann hörte es auf, Dinge in den Primärschlüssel einfügen.