Skip to content

Instantly share code, notes, and snippets.

@wjkoh
Created March 24, 2025 06:45
Show Gist options
  • Save wjkoh/a2cfdd1c4f1b99687cde6714d1d7b885 to your computer and use it in GitHub Desktop.
Save wjkoh/a2cfdd1c4f1b99687cde6714d1d7b885 to your computer and use it in GitHub Desktop.
Go + SQLite3: Temporary Table Not Removed
package main
import (
"context"
"database/sql"
"log"
"os"
_ "github.com/mattn/go-sqlite3"
)
func main() {
err := createTempTableTwice(context.Background())
if err != nil {
log.Fatal(err)
}
log.Println("Done.")
}
func createTempTableTwice(ctx context.Context) error {
os.Remove("./foo.db")
db, err := sql.Open("sqlite3", "./foo.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
{
conn1, err := db.Conn(ctx)
if err != nil {
return err
}
_, err = conn1.ExecContext(ctx, `CREATE TEMPORARY TABLE temp.documents(document_id TEXT PRIMARY KEY);`)
if err != nil {
return err
}
err = conn1.Close()
if err != nil {
return err
}
}
conn2, err := db.Conn(ctx)
if err != nil {
return err
}
defer conn2.Close()
// NOTE: This line causes the following error: `2025/03/24 15:42:40 table documents already exists`
_, err = conn2.ExecContext(ctx, `CREATE TEMPORARY TABLE temp.documents(document_id TEXT PRIMARY KEY);`)
return err
}
@wjkoh
Copy link
Author

wjkoh commented Mar 24, 2025

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment