Core Data SQLite Error beim Update auf 10.6

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Core Data SQLite Error beim Update auf 10.6

    Hallo Leute,

    folgendes Problem mit meinem Programm:
    Core Data SQLite Store wird unter 10.5 erstellt.
    Selbes Programm, selbes Datenmodell unter 10.6:
    Bei einer optional many-to-many Relationship erhalte ich einen SQLite error im Log:
    I/O error for database at /Users/norbert/Library/Application Support/Grosshandel/Grosshandel.grosshandelstore. SQLite error code:1, 'no such column: t1.Z_75PERSONALACCOUNTS1'


    Wird der Store unter 10.6 erstellt, tritt das Problem nicht auf.

    1) Ich informiere Euch, vielleicht habt Ihre ja auch Core Data SQLite Stores mit many2many Relationships in Verwendung.

    2) Habt Ihr einen Tip für mich?

    No.
  • Mit Spalten in der SQLite-Datenbank sollte man ja eigentlich nie was zu tun haben sollen.
    Eben.

    Wenn ich in 10.5 bleibe, oder mit der DB erst bei 10.6 anfange, geht auch alles. Nur wenn ich eine in 10.5 erstellte DB in 10.6 verwende, tritt das Problem auf.

    Und ich habe noch andere many-many relationships, wo es kein Problem gibt. ?(

    No.
  • Eventuell könnte es auch ein Bug sein. Erstelle 2 idente Projekte unter 10.5 und 10.6 und vergleiche die Datenbanken.
    Ein Bug ist es sicher. Apple's Bug.

    Wie sollte ich die DB vergleichen, auf welcher Ebene? SQLite?

    Schade, dass ich keinen Mac mit 10.5 mehr hier habe... Wäre also einigermassen aufwendig.

    Anscheinend hat Apple das Sqlite Speicherformat umgebaut in 10.6
    Vermutest Du das wegen diesem Thread hier oder hast Du da noch andere Hinweise?

    Wisst Ihr, ob CoreData beim SQLLite Store einen Wrapper oder ähnliches drumrum hat, oder ist die Datenbank nix anderes als eine SQLite-DB, die ich, für den Fall der Fälle, irgendwie (wie auch immer) bearbeiten könnte, falls bei einem Kunden das Problem auftritt?
    Mit wäre fast lieber, im Problemfall die Kunden-DB direkt zu überarbeiten, damit sie wieder kompatibel ist, anstatt ein Export- und Re-Import-Tool für mein Programm zu schreiben.

    No.
  • Hab's dreimal gelesen und nicht verstanden. Muss dazu sagen, dass ich mich mit "programmierter" Store-Migration noch nicht so befaßt habe.

    Was meint Apple mit "auto-generated value expression in property mappings"?.

    Hier geht's ja um Migration. Bei mir nicht - ich habe bisher nur eine einzige Datenmodell-Version. Meinst Du, das könnte trotzdem ein Hinweis auf etwas sein, was mir weiterhelfen würde?

    No.
  • Sodala. So wie's aussieht, habe ich's hinbekommen. Und zwar so - ziemlich "low level":

    1) Dump der SQLite-Datenbank im Terminal erstellt:

    Quellcode

    1. sqlite3 /PfadZurCoreDataSQLiteDatenbank .dump > /PfadZumDump.sql


    2) Die SQL-Statements den "neuen" Anforderungenv on 10.6 anpassen, also die Columns uns Indexe so benennen, wie sich Core Data unter 10.6 verhält. In meinem Fall sieht das dann so aus.

    Quellcode

    1. CREATE TABLE Z_75PERSONALACCOUNTREBATEGROUPS ( Z_75PERSONALACCOUNTS1, Z_48PERSONALACCOUNTREBATEGROUPS );
    2. CREATE TABLE Z_75PRICELISTS ( Z_75PERSONALACCOUNTS, Z_50PRICELISTS );
    3. CREATE INDEX Z_75PERSONALACCOUNTREBATEGROUPS_Z_75PERSONALACCOUNTS1_INDEX ON Z_75PERSONALACCOUNTREBATEGROUPS (Z_75PERSONALACCOUNTS1);
    4. CREATE INDEX Z_75PERSONALACCOUNTREBATEGROUPS_Z_48PERSONALACCOUNTREBATEGROUPS_INDEX ON Z_75PERSONALACCOUNTREBATEGROUPS (Z_48PERSONALACCOUNTREBATEGROUPS);
    5. CREATE INDEX Z_75PRICELISTS_Z_75PERSONALACCOUNTS_INDEX ON Z_75PRICELISTS (Z_75PERSONALACCOUNTS);
    6. CREATE INDEX Z_75PRICELISTS_Z_50PRICELISTS_INDEX ON Z_75PRICELISTS (Z_50PRICELISTS);


    3) Mit SQLiteManager eine neue SQLite3-Datenbank anlegen und SQL-Statements des Dumps ausführen, damit die Datenbankstruktur angelegt und die Tabellen gefüllt werden.

    Schaut so aus, als ob es geht. Wenn ja: Schwein gehabt :)
    ... Schwein wohl auch deshalb, weil der Core Data SQL-Store schlicht die nackte SQLite-Datenbank ist.

    Thanks Apple X(

    No.