Kyrre Gjerstad
Kyrre Gjerstad
Explore posts from servers
DTDrizzle Team
Created by Kyrre Gjerstad on 3/22/2024 in #help
mysql2 driver in edge middleware
Hi all, is it possible to use the mysql2 driver in NextJs edge middleware? I was previously running import { drizzle } from 'drizzle-orm/planetscale-serverless'; which worked great, but i'm now migrating away from planetscale. The problem i'm facing is that when i switch to import { drizzle } from 'drizzle-orm/mysql2'; i get the following error in NextJs: edgeFunction is not a function which suggest that something is relying on a node api somewhere. I'm currently running my db on AWS RDS. Any suggestions how to deal with this? Thanks!
6 replies
DTDrizzle Team
Created by Kyrre Gjerstad on 1/29/2024 in #help
Cannot drop index 'PRIMARY' - planetscale
when I try to push to planetscale I get the error:
Cannot drop index 'PRIMARY': needed in a foreign key constraint (errno 1553) (sqlstate HY000)
Cannot drop index 'PRIMARY': needed in a foreign key constraint (errno 1553) (sqlstate HY000)
In order to successfully push I need to drop all the tables before pushing. I'm using the Foreign key constraints Beta at planetscale. When running push with the verbose flag, i see the following:
Warning You are about to execute current statements:
ALTER TABLE `petLog_usersToPets` DROP PRIMARY KEY;
ALTER TABLE `petLog_petRecommendedWeights` MODIFY COLUMN `createdAt` timestamp NOT NULL DEFAULT (now());
ALTER TABLE `petLog_petWeights` MODIFY COLUMN `createdAt` timestamp DEFAULT (now());
ALTER TABLE `petLog_pets` MODIFY COLUMN `createdAt` timestamp DEFAULT (now());
ALTER TABLE `petLog_users` MODIFY COLUMN `createdAt` timestamp DEFAULT (now());
ALTER TABLE `petLog_usersToPets` ADD PRIMARY KEY(`userId`,`petId`);

Cannot drop index 'PRIMARY': needed in a foreign key constraint Sql: "alter table petLog_usersToPets drop primary key"
Warning You are about to execute current statements:
ALTER TABLE `petLog_usersToPets` DROP PRIMARY KEY;
ALTER TABLE `petLog_petRecommendedWeights` MODIFY COLUMN `createdAt` timestamp NOT NULL DEFAULT (now());
ALTER TABLE `petLog_petWeights` MODIFY COLUMN `createdAt` timestamp DEFAULT (now());
ALTER TABLE `petLog_pets` MODIFY COLUMN `createdAt` timestamp DEFAULT (now());
ALTER TABLE `petLog_users` MODIFY COLUMN `createdAt` timestamp DEFAULT (now());
ALTER TABLE `petLog_usersToPets` ADD PRIMARY KEY(`userId`,`petId`);

Cannot drop index 'PRIMARY': needed in a foreign key constraint Sql: "alter table petLog_usersToPets drop primary key"
I'm running drizzle-kit": 0.20.13. my tables:
const mysqlTable = mysqlTableCreator((name) => `petLog_${name}`);

// truncated for brewity
export const usersTable = mysqlTable('users', {
id: varchar('id', {
length: 255,
}).primaryKey(),
//...rest
});

export const petsTable = mysqlTable('pets', {
id: varchar('id', {
length: 255,
}).primaryKey(),
//...rest
});

export const usersToPetsTable = mysqlTable(
'usersToPets',
{
userId: varchar('userId', {
length: 255,
})
.notNull()
.references(() => usersTable.id),
petId: varchar('petId', {
length: 255,
})
.notNull()
.references(() => petsTable.id),
},
(table) => ({
pk: primaryKey({ columns: [table.userId, table.petId] }),
}),
);
const mysqlTable = mysqlTableCreator((name) => `petLog_${name}`);

// truncated for brewity
export const usersTable = mysqlTable('users', {
id: varchar('id', {
length: 255,
}).primaryKey(),
//...rest
});

export const petsTable = mysqlTable('pets', {
id: varchar('id', {
length: 255,
}).primaryKey(),
//...rest
});

export const usersToPetsTable = mysqlTable(
'usersToPets',
{
userId: varchar('userId', {
length: 255,
})
.notNull()
.references(() => usersTable.id),
petId: varchar('petId', {
length: 255,
})
.notNull()
.references(() => petsTable.id),
},
(table) => ({
pk: primaryKey({ columns: [table.userId, table.petId] }),
}),
);
4 replies