I am connecting to a SQL-Server DB using Go 1.6.2. I am using the go-mssqldb driver (github.com/denisenkom/go-mssqldb) with the sql package.
My problem is that I am creating uuids with the github.com/twinj/uuid package (I also tried some others) and they insert correctly but when I try to scan them out
err := Database.QueryRow("SELECT Id FROM ...").Scan(&struct.Id)
it returns the Id with the first half flipped. I found an explanation in this SO post (https://dba.stackexchange.com/questions/121869/sql-server-uniqueidentifier-guid-internal-representation) and some other articles/posts.
However, I have been unable to find anything specific for solving this in Go. I can't do anything to change the way SQL-server stores the guids. Am I missing something with the UUID scan implementations? I haven't seen a way to change the way it reads. My last option will be to write my own implementation to swap the bits but wanted to reach out to see if I was missing something with the driver or UUID packages or some other library out there.
convert(char(36), Id)
orcast(Id as char(36))
data type conversions – Subtropicscast(Id as binary(16))
. It's likely more efficient. Does it also give a correct uuid? – Subtropics