{"id":43506,"library":"okanjo-app-mysql","title":"Okanjo MySQL Service","description":"Service for interfacing with MySQL or MariaDB databases within the Okanjo App ecosystem. Current stable version is 5.0.1, released with breaking changes including dropping MySQL 5.7 support, port numbers must be numeric, and updated dependencies. Provides MySQLService/MariaDBService for direct SQL queries and CrudService/MariaDBCrudService/CollectionCrudService for ORM-like CRUD operations. Requires okanjo-app >=3 as peer dependency. Regular releases with documented breaking changes.","status":"active","version":"5.0.1","language":"javascript","source_language":"en","source_url":"https://github.com/okanjo/okanjo-app-mysql","tags":["javascript","Okanjo","OkanjoApp","MySQL","MariaDB","Database"],"install":[{"cmd":"npm install okanjo-app-mysql","lang":"bash","label":"npm"},{"cmd":"yarn add okanjo-app-mysql","lang":"bash","label":"yarn"},{"cmd":"pnpm add okanjo-app-mysql","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency: core framework required by all modules","package":"okanjo-app","optional":false},{"reason":"Runtime dependency for MySQL driver (Oracle connector)","package":"mysql","optional":false},{"reason":"Runtime dependency for MariaDB driver","package":"mariadb","optional":false}],"imports":[{"note":"This package is CommonJS-only; ESM import not supported natively.","wrong":"import { MySQLService } from 'okanjo-app-mysql';","symbol":"MySQLService","correct":"const { MySQLService } = require('okanjo-app-mysql');"},{"note":"Both named import patterns work, but destructuring is idiomatic.","wrong":"const MariaDBService = require('okanjo-app-mysql').MariaDBService;","symbol":"MariaDBService","correct":"const { MariaDBService } = require('okanjo-app-mysql');"},{"note":"CrudService is exported from the package root, not a subpath.","wrong":"const CrudService = require('okanjo-app-mysql/CrudService');","symbol":"CrudService","correct":"const { CrudService } = require('okanjo-app-mysql');"},{"note":"Destructuring is preferred for consistency.","wrong":"const CollectionCrudService = require('okanjo-app-mysql').CollectionCrudService;","symbol":"CollectionCrudService","correct":"const { CollectionCrudService } = require('okanjo-app-mysql');"}],"quickstart":{"code":"const { MySQLService } = require('okanjo-app-mysql');\nconst { App } = require('okanjo-app');\n\nconst app = new App({\n  config: {\n    mysql: {\n      host: process.env.DB_HOST ?? 'localhost',\n      port: parseInt(process.env.DB_PORT ?? '3306'),\n      user: process.env.DB_USER ?? 'root',\n      password: process.env.DB_PASSWORD ?? '',\n      database: process.env.DB_NAME ?? 'test'\n    }\n  }\n});\n\nconst mysqlService = new MySQLService(app);\n\nmysqlService.query('SELECT 1 + 1 AS solution', [], (err, response) => {\n  if (err) {\n    console.error(err);\n    return;\n  }\n  console.log('Result:', response.results[0].solution);\n  app.shutdown();\n});\n\napp.init();","lang":"javascript","description":"Shows how to instantiate MySQLService with configuration and run a simple SQL query with callback."},"warnings":[{"fix":"Update code to use new method names and numeric ports. For MySQL 5.7 use MariaDB service or stay on v4.","message":"v5.0.0: MySQL 5.7 not supported using MySQL's driver. Port numbers must be numeric. getAffectedRowsCount renamed to getAffectedItemsCount. MariaDB returns BigInt for count fields. query.getRawStatement is now query.getSQL. column.type is now column.getType() returning string enum. All dependencies updated.","severity":"breaking","affected_versions":">=5.0.0"},{"fix":"Rename references from service.database to service.schema and remove underscore from private methods.","message":"v4.0.0: CrudService: Renamed service.database to service.schema. Removed underscore prefix from crud service functions (e.g., _create => create).","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Update all query calls and use session instead of connection. See migration guide.","message":"v3.0.0: Switched MySQL driver from mysqljs/mysql to mysql/mysql-connector-nodejs. pool property replaced with client. query signature changed to (sql, args, callback, options). getConnection replaced with getSession. CrudService MAX_VALUE class replaced with string constant.","severity":"breaking","affected_versions":">=3.0.0"},{"fix":"Update callback usage and migrate to Promise async/await if needed.","message":"v2.0.0: MySQLService query callback now returns a single response object with results and fields properties. CrudService methods now return Promises; callback optional. _create, _update signatures changed.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Install peer dependency: npm install okanjo-app","message":"Peer dependency okanjo-app >=3 required but not installed automatically. If missing, require('okanjo-app-mysql') will fail.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'3':57 '5.0.1':21 '5.7':29 'app':15,56 'break':24,65 'chang':25,66 'crud':51 'crudservice/mariadbcrudservice/collectioncrudservice':46 'current':17 'databas':11,72 'depend':38,60 'direct':42 'document':64 'drop':27 'ecosystem':16 'includ':26 'interfac':6 'javascript':67 'like':50 'mariadb':10,71 'must':33 'mysql':2,8,28,70 'mysqlservice/mariadbservice':40 'number':32 'numer':35 'okanjo':1,14,55,68 'okanjo-app':54 'okanjoapp':69 'oper':52 'orm':49 'orm-lik':48 'peer':59 'port':31 'provid':39 'queri':44 'regular':61 'releas':22,62 'requir':53 'servic':3,4 'sql':43 'stabl':18 'support':30 'updat':37 'version':19 'within':12","created_at":"2026-06-05T17:00:07.801866+00:00","updated_at":"2026-06-05T17:00:07.801866+00:00","problems":[{"fix":"npm install okanjo-app","cause":"Missing peer dependency okanjo-app.","error":"Error: Cannot find module 'okanjo-app'"},{"fix":"Ensure port is a number, e.g., parseInt(process.env.DB_PORT ?? '3306')","cause":"Port provided as string; v5 requires numeric port.","error":"Error: Port must be a number"},{"fix":"Check import: const { MySQLService } = require('okanjo-app-mysql'); and instantiate with valid app instance.","cause":"Service not properly initialized or imported incorrectly.","error":"mysqlService.query is not a function"},{"fix":"Update callback signature to (err, response) and use response.results and response.fields.","cause":"Query callback expected single argument in v2+ but using old two-argument (err, results) pattern.","error":"TypeError: Cannot read property 'results' of undefined"}],"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/okanjo/okanjo-app-mysql#readme","github":"https://github.com/okanjo/okanjo-app-mysql","docs":null,"changelog":null,"pypi":null,"npm":"okanjo-app-mysql","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}}