The mailing list strips attachments, btw. Anyways, looking at that, yeah, they're all text values:
sqlite> SELECT bookIsbn, typeof(bookIsbn) FROM books WHERE bookAuthor LIKE '%Ambrose%'; bookIsbn typeof(bookIsbn) ---------- ---------------- 0486280381 text 9781496030 text 9781496030 text There are other problems with the database too: sqlite> PRAGMA integrity_check; integrity_check --------------------------------------------------- row 649 missing from index sqlite_autoindex_books_1 row 659 missing from index sqlite_autoindex_books_1 row 665 missing from index sqlite_autoindex_books_1 row 667 missing from index sqlite_autoindex_books_1 row 674 missing from index sqlite_autoindex_books_1 row 676 missing from index sqlite_autoindex_books_1 I'd start going through https://www.sqlite.org/howtocorrupt.html and trying to figure out if anything there might have happened. On Sat, Dec 21, 2019 at 1:43 PM Michael Walker (barrucadu) < m...@barrucadu.co.uk> wrote: > Hi Shawn, > > Thanks for your response. Though that doesn't seem to be the case: > > sqlite> select bookIsbn, typeof(bookIsbn) from books where bookIsbn = > "9781496030825"; > 9781496030825|text > sqlite> select bookIsbn, typeof(bookIsbn) from books where bookIsbn = > "9780099477310"; > 9780099477310|text > > The column is a VARCHAR: > > CREATE TABLE `books` ( > `bookIsbn` VARCHAR NOT NULL PRIMARY KEY, > `bookTitle` VARCHAR NOT NULL, > `bookSubtitle` VARCHAR NOT NULL, > `bookCover` VARCHAR NULL, > `bookVolume` VARCHAR NOT NULL, > `bookFascicle` VARCHAR NOT NULL, > `bookVoltitle` VARCHAR NOT NULL, > `bookAuthor` VARCHAR NOT NULL, > `bookTranslator` VARCHAR NULL, > `bookEditor` VARCHAR NULL, > `bookSorting` VARCHAR NULL, > `bookRead` BOOLEAN NOT NULL, > `bookLastRead` TIMESTAMP NULL, > `bookNowReading` BOOLEAN NOT NULL, > `bookLocation` VARCHAR NOT NULL, > `bookBorrower` VARCHAR NOT NULL, > `bookCategoryCode` VARCHAR NOT NULL, > FOREIGN KEY(`bookCategoryCode`) REFERENCES > `book_categories`(`categoryCode`) > ); > > I'm not sure the attachment to my first email got through, so here's the > database: > https://misc.barrucadu.co.uk/forever/82e5584a-e4a8-4804-8abe-8f00be73f725/bookdb.sqlite > > > ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ > On Saturday, 21 December 2019 21:37, Shawn Wagner <shawnw.mob...@gmail.com> > wrote: > > > Without seeing your table definition, this is just a guess, but maybe the > > duplicate keys are stored as different types, with the primary key column > > having an affinity that doesn't force one particular storage class: > > > > sqlite> CREATE TABLE test(id PRIMARY KEY); > > sqlite> INSERT INTO test VALUES('12345'); > > sqlite> INSERT INTO test VALUES(12345); > > sqlite> SELECT id, typeof(id) FROM test; > > id typeof(id) > > > > 12345 text > > 12345 integer > > sqlite> SELECT id, typeof(id) FROM test WHERE id = '12345'; > > id typeof(id) > > > > 12345 text > > > > On Sat, Dec 21, 2019 at 1:26 PM Michael Walker (barrucadu) < > > m...@barrucadu.co.uk> wrote: > > > > > Hi, > > > I've somehow ended up with a table which contains two records for the > same > > > primary key - well actually I've got two primary keys like that, so I > have > > > four records with two primary keys between them. > > > I've been unable to reproduce this from a clean database, so I attach > my > > > database file to this email. > > > Here are some oddities: > > > > > > $ sqlite3 bookdb.sqlite > > > SQLite version 3.28.0 2019-04-16 19:49:53 > > > Enter ".help" for usage hints. > > > sqlite> select * from books where bookIsbn = "9781496030825"; > > > 9781496030825|Can Such Things Be?||9781496030825.jpg||||Bierce, > > > Ambrose||||0||0|London||F > > > sqlite> select * from books where bookIsbn = "9780099477310"; > > > 9780099477310|Catch-22||9780099477310.jpg||||Heller, > > > Joseph||||0||0|London||F > > > sqlite> .output books_issue > > > sqlite> .dump books > > > sqlite> .quit > > > > > > $ grep "9781496030825" < books_issue > > > INSERT INTO books VALUES('9781496030825','Can Such Things > > > Be?','','9781496030825.jpg','','','','Bierce, > > > Ambrose',NULL,NULL,NULL,0,NULL,0,'London','','F'); > > > INSERT INTO books VALUES('9781496030825','Can Such Things > > > Be?','','9781496030825.jpg','','','','Bierce, > > > Ambrose',NULL,NULL,NULL,0,NULL,0,'London','','F'); > > > > > > $ grep "9780099477310" < books_issue > > > INSERT INTO books > > > > VALUES('9780099477310','Catch-22','','9780099477310.jpg','','','','Heller, > > > Joseph',NULL,NULL,NULL,0,NULL,0,'London','','F'); > > > INSERT INTO books > > > > VALUES('9780099477310','Catch-22','','9780099477310.jpg','','','','Heller, > > > Joseph',NULL,NULL,NULL,0,NULL,0,'London','','F'); > > > > > > $ sqlite3 bookdb.sqlite > > > SQLite version 3.28.0 2019-04-16 19:49:53 > > > Enter ".help" for usage hints. > > > sqlite> drop table books; > > > sqlite> > > > > > > $ sqlite3 bookdb.sqlite < books_issue > > > Error: near line 697: UNIQUE constraint failed: books.bookIsbn > > > Error: near line 698: UNIQUE constraint failed: books.bookIsbn > > > > > > > > > Updating either affected record results in the second copy in the .dump > > > output being updated, the first copy has the original state. > > > The table has always had a primary key constraint, so I'm not sure how > > > it's ended up in its current state. However, even if there were not a > > > primary key constraint, there do seem to be two very real bugs here: > SELECT > > > gives different results to .dump, and .dump is producing output which > can't > > > be restored. > > > I'm not sure if you'll be able to make anything of this, as I say I > > > haven't been able to reproduce it from a blank database, but I figure > > > you'll be better at debugging this than me. > > > Thanks > > > -- > > > Michael Walker (http://www.barrucadu.co.uk) > > > > > > sqlite-users mailing list > > > sqlite-users@mailinglists.sqlite.org > > > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > > sqlite-users mailing list > > sqlite-users@mailinglists.sqlite.org > > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > _______________________________________________ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users