this happens because the API for the sqlite d1 file in miniflare is slightly different from the mana
this happens because the API for the sqlite d1 file in miniflare is slightly different from the managed postgres api in live. Please share your solution because mine is really dumb
import { defineConfig, type Config } from "drizzle-kit";
import { parse as parseJsonc } from "comment-json";
import { existsSync, readFileSync } from "fs";
import { join } from "path";
const wranglerConfig = parseJsonc(
readFileSync(join(__dirname, "wrangler.jsonc"), "utf-8"),
) as unknown as WranglerConfig;
const d1Config = wranglerConfig.d1_databases[0];
const env = Object.fromEntries(
((filePath) =>
existsSync(filePath)
? readFileSync(filePath, "utf-8")
.split("\n")
.filter((line) => line.trim() && !line.startsWith("#"))
.map((line) =>
line
.split(/=(.+)/)
.filter(Boolean)
.map((part) => part.trim()),
)
.filter((parts) => parts.length === 2)
.map(([key, value]) => [key, value?.replace(/^["']|["']$/g, "")])
: [])(join(process.cwd(), ".dev.vars")),
) as Record<string, string>;
/*
* NOTE: Workaround to make drizzle studio work with D1.
* https://kevinkipp.com/blog/going-full-stack-on-astro-with-cloudflare-d1-and-drizzle/
* Github discussion: https://github.com/drizzle-team/drizzle-orm/discussions/1545#discussioncomment-8115423
*/
export default process.env["NODE_ENV"] === "production"
? defineConfig({
dialect: "sqlite",
driver: "d1-http",
out: "drizzle",
schema: "src/db/schema.ts",
dbCredentials: {
accountId: env["CF_ACCOUNT_ID"]!,
token: env["CF_D1_TOKEN"]!,
databaseId: d1Config!.database_id!,
},
} satisfies Config)
: defineConfig({
dialect: "sqlite",
out: "drizzle",
schema: "src/db/schema.ts",
dbCredentials: {
url: env["DB_LOCAL_PATH"]!,
},
} satisfies Config);import { defineConfig, type Config } from "drizzle-kit";
import { parse as parseJsonc } from "comment-json";
import { existsSync, readFileSync } from "fs";
import { join } from "path";
const wranglerConfig = parseJsonc(
readFileSync(join(__dirname, "wrangler.jsonc"), "utf-8"),
) as unknown as WranglerConfig;
const d1Config = wranglerConfig.d1_databases[0];
const env = Object.fromEntries(
((filePath) =>
existsSync(filePath)
? readFileSync(filePath, "utf-8")
.split("\n")
.filter((line) => line.trim() && !line.startsWith("#"))
.map((line) =>
line
.split(/=(.+)/)
.filter(Boolean)
.map((part) => part.trim()),
)
.filter((parts) => parts.length === 2)
.map(([key, value]) => [key, value?.replace(/^["']|["']$/g, "")])
: [])(join(process.cwd(), ".dev.vars")),
) as Record<string, string>;
/*
* NOTE: Workaround to make drizzle studio work with D1.
* https://kevinkipp.com/blog/going-full-stack-on-astro-with-cloudflare-d1-and-drizzle/
* Github discussion: https://github.com/drizzle-team/drizzle-orm/discussions/1545#discussioncomment-8115423
*/
export default process.env["NODE_ENV"] === "production"
? defineConfig({
dialect: "sqlite",
driver: "d1-http",
out: "drizzle",
schema: "src/db/schema.ts",
dbCredentials: {
accountId: env["CF_ACCOUNT_ID"]!,
token: env["CF_D1_TOKEN"]!,
databaseId: d1Config!.database_id!,
},
} satisfies Config)
: defineConfig({
dialect: "sqlite",
out: "drizzle",
schema: "src/db/schema.ts",
dbCredentials: {
url: env["DB_LOCAL_PATH"]!,
},
} satisfies Config);




