You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Install MySQL 8 or rent a MySQL Managed Database from a cloud service.
Create a database with the following SQL query
CREATEDATABASEIF NOT EXISTS `devdb` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT ENCRYPTION ='N';
Run example
// deno run --allow-env --allow-net todo.tsimport*asmysql2from"https://deno.land/x/mysql2/mod.ts";constpool=mysql2.createPool({host: "127.0.0.1",port: 3306,user: "test_user",password: "test_password",database: "nest_database",connectionLimit: 4,timezone: "+00:00"// Sync app timezone with MySQL server UTC timezone});/* CREATE temp table tblTodos in database memory */constsqlCREATE1=`CREATE TEMPORARY TABLE IF NOT EXISTS tblTodos ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, userId BIGINT UNSIGNED DEFAULT NULL, CHECK (userId >= 0), todoCreated TIMESTAMP DEFAULT NULL, todoModified TIMESTAMP DEFAULT NULL, todoStatus VARCHAR(16) DEFAULT NULL, todoTitle VARCHAR(128) DEFAULT NULL, todoBody VARCHAR(1024) DEFAULT NULL, PRIMARY KEY (id)) ENGINE = INNODB AUTO_INCREMENT=2001 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;`;/* SELECT 1 shows an empty table */constsqlSELECT1=`SELECT * FROM tblTodos;`;/* INSERT 1 adds a Pending todo record to the table */constsqlINSERT1=`INSERT INTO tblTodos ( id, userId, todoCreated, todoModified, todoStatus, todoTitle, todoBody) VALUES ( NULL, 1001, NOW(), NOW(), 'Pending', 'Shopping List #1', 'Apples & Oranges' );`;/* SELECT 2 shows the Pending todo record */constsqlSELECT2=`SELECT * FROM tblTodos WHERE todoStatus = 'Pending';`;/* UPDATE 1 changes todo status from Pending to Complete */constsqlUPDATE1=`UPDATE tblTodos SET todoModified = NOW(), todoStatus = 'Complete'WHERE id = 2001 AND userId = 1001;`;/* SELECT 3 shows the Complete todo record */constsqlSELECT3=`SELECT * FROM tblTodos WHERE todoStatus = 'Complete' AND userId = 1001;`;/* DELETE 1 deletes todo from table */constsqlDELETE1=`DELETE FROM tblTodos WHERE id = 2001 AND userId = 1001;`;/* SELECT 4 once again shows an empty table */constsqlSELECT4=`SELECT * FROM tblTodos;`;/* DROP 1 deletes table tblTodos from database */constsqlDROP1=`DROP TEMPORARY TABLE IF EXISTS tblTodos;`;constconnection=awaitpool.getConnection();try{constcreate1Result=awaitconnection.execute(sqlCREATE1);if(create1Result)console.log("Table tblToDos created.");constselect1Result=awaitconnection.execute(sqlSELECT1);if(select1Result)console.log("Table tblToDos contains",select1Result[0].length,"records.");constinsert1Result=awaitconnection.execute(sqlINSERT1);if(insert1Result)console.log(insert1Result[0].affectedRows,"record(s) inserted.","id:",insert1Result[0].insertId);constselect2Result=awaitconnection.execute(sqlSELECT2);if(select2Result)console.log(select2Result[0]);constupdate1Result=awaitconnection.execute(sqlUPDATE1);if(update1Result)console.log(update1Result[0].affectedRows,"record(s) updated.");constselect3Result=awaitconnection.execute(sqlSELECT3);if(select3Result)console.log(select3Result[0]);constdelete1Result=awaitconnection.execute(sqlDELETE1);if(delete1Result)console.log(delete1Result[0].affectedRows,"record(s) deleted.");constselect4Result=awaitconnection.execute(sqlSELECT4);if(select4Result)console.log("Table tblToDos contains",select1Result[0].length,"records.");constdrop1Result=awaitconnection.execute(sqlDROP1);if(drop1Result)console.log("Table tblToDos droped.");}catch(error){// Build a smaller MySQL error message.consterrorPart1=error.message.split(";")[0];consterrorPart2=error.message.split(" use ")[1];console.log(`%cError: ${errorPart1}${errorPart2}`,"color: #e53935");}finally{connection.release();}awaitpool.end();
Hello. I'm really grateful you ported this library to Deno. What a gem!
I wanted to propose a more complete readme.md for new & existing devs who run into
mysql2
for Deno.mysql2
MySQL 8 client for Deno with focus on performance. Supports prepared statements, non-utf8 encodings, binary log protocol, compression and much more.
Forked from https://github.com/sidorares/node-mysql2
To-Do app Queryflow Example
Output:
The text was updated successfully, but these errors were encountered: