{"id":41680,"library":"orange-dragonfly-orm-mysql","title":"Orange Dragonfly ORM MySQL Driver","description":"MySQL driver for the Orange Dragonfly ORM, a TypeScript ORM for Node.js. Version 0.8.0 provides MySQL-specific configuration: reserved word escaping, fulltext search syntax (MATCH AGAINST), and connection pooling. Requires orange-dragonfly-orm (peer dependency). Actively maintained, supports Node 18+. Alternative to TypeORM or Sequelize with a simpler ActiveRecord pattern.","status":"active","version":"0.8.0","language":"javascript","source_language":"en","source_url":"https://github.com/charger88/orange-dragonfly-orm-mysql","tags":["javascript","database","object","sql","query","mysql","typescript"],"install":[{"cmd":"npm install orange-dragonfly-orm-mysql","lang":"bash","label":"npm"},{"cmd":"yarn add orange-dragonfly-orm-mysql","lang":"bash","label":"yarn"},{"cmd":"pnpm add orange-dragonfly-orm-mysql","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core ORM package required; provides base classes like ActiveRecord, AbstractQuery, Relation","package":"orange-dragonfly-orm","optional":false},{"reason":"Peer dependency for validation (optional but installed automatically with npm 7+)","package":"orange-dragonfly-validator","optional":true}],"imports":[{"note":"Default export. No named export; must be imported as default.","symbol":"MySQLDriver","correct":"import MySQLDriver from 'orange-dragonfly-orm-mysql'"},{"note":"AbstractQuery is part of the core ORM, not the MySQL driver.","wrong":"import { AbstractQuery } from 'orange-dragonfly-orm-mysql'","symbol":"AbstractQuery","correct":"import { AbstractQuery } from 'orange-dragonfly-orm'"},{"note":"ActiveRecord is a named export, not default.","wrong":"import ActiveRecord from 'orange-dragonfly-orm'","symbol":"ActiveRecord","correct":"import { ActiveRecord } from 'orange-dragonfly-orm'"}],"quickstart":{"code":"npm i orange-dragonfly-orm orange-dragonfly-orm-mysql orange-dragonfly-validator\n\n// main.ts\nimport { AbstractQuery, ActiveRecord, Relation } from 'orange-dragonfly-orm'\nimport MySQLDriver from 'orange-dragonfly-orm-mysql'\n\nclass Brand extends ActiveRecord {\n  static get available_relations() {\n    return {\n      models: Relation.children(this, this.model('CarModel')),\n    }\n  }\n}\n\nclass CarModel extends ActiveRecord {}\n\nAbstractQuery.registerDB(new MySQLDriver({\n  host: process.env.MYSQL_HOST ?? 'localhost',\n  port: parseInt(process.env.MYSQL_PORT ?? '3306', 10),\n  user: process.env.MYSQL_USER ?? 'root',\n  password: process.env.MYSQL_PASSWORD ?? '',\n  database: process.env.MYSQL_DB ?? 'mydb',\n}))\n\nActiveRecord.registerModel(Brand)\nActiveRecord.registerModel(CarModel)\n\nconst brands = await Brand.all()\nconsole.log(brands)\n\nawait AbstractQuery.releaseDB()","lang":"typescript","description":"Install packages, define models with relations, register MySQL driver, query all brands, and close connection."},"warnings":[{"fix":"Manually validate config before passing to MySQLDriver, e.g. using orange-dragonfly-validator.","message":"MySQLDriver configuration is not validated on construction; invalid options silently default","severity":"breaking","affected_versions":">=0.8.0"},{"fix":"Call AbstractQuery.releaseDB() to close connections instead of driver.disconnect().","message":"connect() and disconnect() methods may be removed in future versions; use AbstractQuery.releaseDB() instead","severity":"deprecated","affected_versions":">=0.8.0"},{"fix":"Run: npm i orange-dragonfly-orm orange-dragonfly-orm-mysql orange-dragonfly-validator","message":"Peer dependency orange-dragonfly-orm must be installed separately; install command shown may miss it","severity":"gotcha","affected_versions":">=0.8.0"},{"fix":"Always call AbstractQuery.releaseDB() before registering a different driver.","message":"The driver modifies global ORMHelpers (ESCAPE_CHAR, RESERVED_WORDS, FULL_TEXT_CLAUSE_FN). Switching drivers without disconnect may cause conflicts","severity":"gotcha","affected_versions":">=0.8.0"}],"env_vars":null,"search_vec":"'0.8.0':19 '18':47 'activ':43 'activerecord':56 'altern':48 'configur':24 'connect':34 'databas':59 'depend':42 'dragonfli':2,11,39 'driver':5,7 'escap':27 'fulltext':28 'javascript':58 'maintain':44 'match':31 'mysql':4,6,22,63 'mysql-specif':21 'node':46 'node.js':17 'object':60 'orang':1,10,38 'orange-dragonfly-orm':37 'orm':3,12,15,40 'pattern':57 'peer':41 'pool':35 'provid':20 'queri':62 'requir':36 'reserv':25 'search':29 'sequel':52 'simpler':55 'specif':23 'sql':61 'support':45 'syntax':30 'typeorm':50 'typescript':14,64 'version':18 'word':26","created_at":"2026-06-04T18:53:35.178758+00:00","updated_at":"2026-06-04T18:53:35.178758+00:00","problems":[{"fix":"npm install orange-dragonfly-orm","cause":"Missing core peer dependency","error":"Error: Cannot find module 'orange-dragonfly-orm'"},{"fix":"Use default import: import MySQLDriver from 'orange-dragonfly-orm-mysql'","cause":"Importing MySQLDriver incorrectly","error":"Error: registerDB expects an instance of AbstractDriver"},{"fix":"Do not call .connect() manually. Connection happens on first query via AbstractQuery","cause":"Calling .connect() on MySQLDriver instance; the driver's connect is managed internally","error":"TypeError: driver.connect is not a function"},{"fix":"ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'password'; or use a compatible authentication plugin","cause":"MySQL 8+ default authentication plugin (caching_sha2_password) may not be supported by the underlying mysql2 driver","error":"ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server"}],"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/charger88/orange-dragonfly-orm-mysql#readme","github":"https://github.com/charger88/orange-dragonfly-orm-mysql","docs":null,"changelog":null,"pypi":null,"npm":"orange-dragonfly-orm-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-04","next_check":"2026-09-02","install_tag":null}}