Setting Up Prisma with MySQL: A Step-by-Step Guid
https://medium.com/@xuwei19850423/setting-up-prisma-with-mysql-a-step-by-step-guid-6a2bd872b985
.env
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model Device {
id Int @id @default(autoincrement())
name String
data Json
}src\index.js
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
async function main() {
const device = await prisma.device.create({
data: {
name: "Alice",
data: { key: "value" }, // Example JSON data
},
});
console.log(device);
}
main()
.catch(async (e) => {
console.error(e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});prisma\schema.prisma
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model Device {
id Int @id @default(autoincrement())
name String
data Json
}package.json
{
"name": "graph",
"version": "1.0.0",
"main": "src/index.js",
"type": "module",
"scripts": {
"dev": "nodemon src/index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"@prisma/client": "^6.2.1",
"dotenv": "^16.4.7",
"express": "^4.21.2",
"express-graphql": "^0.12.0",
"fs": "^0.0.1-security",
"graphql": "^16.10.0",
"graphql-yoga": "^5.10.9",
"lodash": "^4.17.21",
"nodemon": "^3.1.9",
"path": "^0.12.7"
}
}

Setting Up Prisma with MySQL: A Step-by-Step Guid
·
Follow
3 min read·Feb 16, 2024
3

Setting up Mysql
Firstly, let’s install MySQL on Ubuntu by following the instructions provided in the following guide:
https://medium.com/devops-dev/how-to-install-and-configure-mysql-8-x-on-ubuntu-23-x-190b50856450
After installing MySQL and logging in with the root user, we can proceed to create a database and tables. Here are the commands:
mysql -u root -pEnter your password when prompted.
Creating a database named myFirstDatabase:
CREATE DATABASE myFirstDatabase;To see the list of databases and let’s use the myFirstDatabase:
show databases;
use myFirstDatabase;Creating a table named device with columns id, name, and data:
CREATE TABLE device (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
data JSON
);
show tables;2 Create project setup
To start, create a project directory and navigate into it:
mkdir hello-prisma
cd hello-prismaNext, initialize a TypeScript project and add the Prisma CLI as a development dependency:
npm init -y
npm install prisma typescript ts-node @types/node --save-devThis sets up your package.json with the necessary dependencies for your TypeScript app.
Then, initialize TypeScript:
You can now invoke the Prisma CLI by prefixing it with npx:
npx prismaNext, set up your Prisma project by creating your Prisma schema file with the following command:
npx prisma initThis command does two things:
creates a new directory called
prismathat contains a file calledschema.prisma, which contains the Prisma schema with your database connection variable and schema models
3. Install and generate Prisma Client
To get started with Prisma Client, you need to install the @prisma/client package:

npm install @prisma/client4. Connect your database (Mysql)
To connect your database, update the url field of the datasource block in your Prisma schema (prisma/schema.prisma) to your database connection URL:
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model device {
id Int @id @default(autoincrement())
name String
data Json
}Update your .env file (vim .env) with your MySQL database connection URL:
DATABASE_URL="mysql://helloai:123456@127.0.0.1:3306/myFirstDatabase"5. Write your first query with Prisma Client
Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. For this guide, let’s use a plain Node.js script (index.ts) to explore some basic features of Prisma Client:
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function main() {
const device = await prisma.device.create({
data: {
name: 'Alice',
data: { key: 'value' } // Example JSON data
},
})
console.log(device)
}
main()
.catch(async (e) => {
console.error(e)
process.exit(1)
})
.finally(async () => {
await prisma.$disconnect()
})Run prisma generate in your terminal to generate Prisma Client. This command reads your Prisma schema and generates Prisma Client based on it. Make sure you run this command in your project directory where your schema.prisma file is located:
npx prisma generateTo run the TypeScript script, use the following command:
npx ts-node index.tsThis command will execute the TypeScript file (index.ts) using ts-node.

Reference: https://www.prisma.io/docs/orm/overview/databases/mysql
Last updated
