{"id":43370,"library":"mysql-utilities","title":"mysql-utilities","description":"Utilities for the node-mysql driver (felixge/node-mysql), providing specialized result types (queryRow, queryValue, queryCol, queryHash, queryKeyValue), introspection methods (primary keys, foreign keys, tables, etc.), and SQL autogenerating methods (select, insert, update, upsert, delete, count). Current stable version v1.1.4, maintained on GitHub by Metarhia/Impress team. Key differentiator: extends mysql connection object via mix-ins rather than wrapper classes. Last updated 2018, in maintenance mode.","status":"maintenance","version":"1.1.4","language":"javascript","source_language":"en","source_url":"https://github.com/tshemsedinov/node-mysql-utilities","tags":["javascript","mysql","utilities","introspection","impress"],"install":[{"cmd":"npm install mysql-utilities","lang":"bash","label":"npm"},{"cmd":"yarn add mysql-utilities","lang":"bash","label":"yarn"},{"cmd":"pnpm add mysql-utilities","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency: the utilities mix into instances of mysql (node-mysql) connection objects","package":"mysql","optional":false}],"imports":[{"note":"CJS-only package; no ESM or default export. Must use require().","wrong":"import mysqlUtilities from 'mysql-utilities';","symbol":"default","correct":"const mysqlUtilities = require('mysql-utilities');"},{"note":"upgrade is a static method on the exported object, not on the connection instance.","wrong":"connection.upgrade();","symbol":"upgrade","correct":"mysqlUtilities.upgrade(connection);"},{"note":"introspection must be called separately; it is not enabled by upgrade() even with options.","wrong":"mysqlUtilities.upgrade(connection, true);","symbol":"introspection","correct":"mysqlUtilities.introspection(connection);"}],"quickstart":{"code":"const mysql = require('mysql');\nconst mysqlUtilities = require('mysql-utilities');\n\nconst connection = mysql.createConnection({\n  host: 'localhost',\n  user: 'root',\n  password: 'password',\n  database: 'test'\n});\n\nconnection.connect();\n\nmysqlUtilities.upgrade(connection);\nmysqlUtilities.introspection(connection);\n\n// Use queryRow to get a single row\nconnection.queryRow('SELECT * FROM users WHERE id = ?', [1], (err, row) => {\n  if (err) throw err;\n  console.log(row);\n});\n\n// Use introspection to get table fields\nconnection.fields('users', (err, fields) => {\n  if (err) throw err;\n  console.log(fields);\n});\n\nconnection.end();","lang":"javascript","description":"Shows how to install, import, attach utilities via upgrade() and introspection(), then use queryRow() and fields()."},"warnings":[{"fix":"Use mysql2 for active development; however mysql-utilities is not compatible. Consider using a different ORM or raw mysql2.","message":"The 'mysql' package (node-mysql) is itself deprecated. mysql-utilities depends on it and will not work with mysql2.","severity":"deprecated","affected_versions":">=0.0.0"},{"fix":"Always call mysqlUtilities.upgrade(connection) before using queryRow, queryValue, etc.","message":"Must call mysqlUtilities.upgrade() before using any utility methods; calling introspection() alone does not enable query helpers.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use a // @ts-ignore or manually declare the augmented methods on the Connection interface.","message":"Utility methods like queryRow are added directly to the connection object; TypeScript definitions are not provided, leading to type errors.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Update from var mu = require('mysql-utilities'); mu.xxx(connection) to require('mysql-utilities').upgrade(connection);","message":"Breaking change in v1.0.0: The API changed from using a wrapper to mix-in pattern. Upgrade from v0.x requires code changes.","severity":"breaking","affected_versions":"<1.0.0"}],"env_vars":null,"search_vec":"'2018':65 'autogener':31 'class':62 'connect':53 'count':38 'current':39 'delet':37 'differenti':50 'driver':10 'etc':28 'extend':51 'felixge/node-mysql':11 'foreign':25 'github':45 'impress':73 'in':58 'insert':34 'introspect':21,72 'javascript':69 'key':24,26,49 'last':63 'maintain':43 'mainten':67 'metarhia/impress':47 'method':22,32 'mix':57 'mix-in':56 'mode':68 'mysql':2,9,52,70 'mysql-util':1 'node':8 'node-mysql':7 'object':54 'primari':23 'provid':12 'querycol':18 'queryhash':19 'querykeyvalu':20 'queryrow':16 'queryvalu':17 'rather':59 'result':14 'select':33 'special':13 'sql':30 'stabl':40 'tabl':27 'team':48 'type':15 'updat':35,64 'upsert':36 'util':3,4,71 'v1.1.4':42 'version':41 'via':55 'wrapper':61","created_at":"2026-06-05T16:59:28.264532+00:00","updated_at":"2026-06-05T16:59:28.264532+00:00","problems":[{"fix":"Add mysqlUtilities.upgrade(connection); after creating the connection.","cause":"Forgot to call mysqlUtilities.upgrade(connection) before using queryRow.","error":"TypeError: connection.queryRow is not a function"},{"fix":"Run: npm install mysql","cause":"The peer dependency 'mysql' (node-mysql) is not installed.","error":"Error: Cannot find module 'mysql'"},{"fix":"Upgrade to >=1.0.0 and use mysqlUtilities.introspection(connection);","cause":"Using an older version (<1.0.0) where introspection was not separated or mis-imported.","error":"TypeError: mysqlUtilities.introspection is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/tshemsedinov/node-mysql-utilities#readme","github":"https://github.com/tshemsedinov/node-mysql-utilities","docs":null,"changelog":null,"pypi":null,"npm":"mysql-utilities","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}