sqlite3\_exec will only automatically re-prepare the statement if it was originally prepared using sqlite3\_prepare\_v2 or sqlite3\_prepare\_v3. Statements prepared using sqlite3\_prepare interface do not store the statement text and therefore cannot be automatically re-prepared. sqlite3\_exec may still return a schema changed error if it is unable to re-prepare the statement within the number of re-tries that have been configured. <https://sqlite.org/c3ref/prepare.html> Nevertheless, the reprepare operation will be logged in the log even if it is carried out transparently and no error is returned to the user -- and I think this is the complaint -- the log is logging that a re-prepare was required even though no error was presented to the application.