I don't think there is a workaround to this. I'm having the same problem and I just ended up leaving the generated FID column as is and created an unique index on the column I wanted to create the primary key on.
If you don't really need a primary key but just an index and/or a unique constraint then just go that way.
I found this link where it has been ...
We have to:
Replace the second geometry by using: ST_GeomFromText('POLYGON(( # #, # #, ... ))'
Select the required columns: column1, column2, column3
Use the SQL function ST_Intersects
ogrinfo myTargetLayer.shp -dialect sqlite -sql "SELECT column1, column2, column3 FROM myTargetLayer WHERE ST_Intersects(GEOMETRY, ST_GeomFromText('POLYGON(( # #, # #, ... )...