I use genanki (a Python module) to create an Anki deck. The documentation of genanki says:
Note s have a guid property that uniquely identifies the note. If you import a new note that has the same GUID as an existing note, the new note will overwrite the old one (as long as their models have the same fields).
This is an important feature if you want to be able to tweak the design/content of your notes, regenerate your deck, and import the updated version into Anki. Your notes need to have stable GUIDs in order for the new note to replace the existing one.
Initially, I had a deck with two fields, let’s call them A and B. I added notes and imported them into Anki.
I then added a third field, Audio. In Anki, I changed the note type to add this field. In my program, I ensured that only fields A and B would be used for the GUID of the note, i.e. the GUIDs didn’t change when I added the Audio field.
When I now try to import the new deck into Anki (deskop or Android), I get:
Notes found in file: 1
Notes skipped, as they’re already in your collection: 1
I don’t understand why it’s not being imported. While the GUID is the same, the modification time is different and the Audio field has a value now whereas the note in Anki has an empty value.
I can make an example deck available if that would help.
BTW, if the first deck I create has all three fields (i.e. there’s no need to change the note type in Anki to add the Audio field), then the import works fine.
When I click on “File: Import…” or “Import File”, I get a file browser. When I click on a file and press “Open”, I see “Processing…” and the file is imported. There is no screen with options. I also don’t see any option to enable more import options.
I’ve tried both with 2.1.8 from Debian (quite old, I know) and with 2.1.33 from Flatpak.
You see that the guid is the same. The mod is newer. And flds is clearly different: there’s info for the Audio field now - but this info doesn’t get applied during the update.
When you add the Audio field, the note modification time changes and becomes more recent than the note in test2.apkg, as a result, when you import test2.apkg, the note won’t be updated since it’s older.
I can confirm that by putting some debug statements in the import code to inspect modification time and running from source.