itp405-spring2015-node:我的第一个 Node.js 项目

  • Z4_859324
  • 1.6MB
  • zip
  • 0
  • VIP专享
  • 0
  • 2022-05-13 05:33
使用 Node.js 的 DVD 搜索页面
# mysql [![NPM Version][npm-image]][npm-url] [![NPM Downloads][downloads-image]][downloads-url] [![Node.js Version][node-version-image]][node-version-url] [![Linux Build][travis-image]][travis-url] [![Windows Build][appveyor-image]][appveyor-url] [![Test Coverage][coveralls-image]][coveralls-url] ## Table of Contents - [Install](#install) - [Introduction](#introduction) - [Contributors](#contributors) - [Sponsors](#sponsors) - [Community](#community) - [Establishing connections](#establishing-connections) - [Connection options](#connection-options) - [SSL options](#ssl-options) - [Terminating connections](#terminating-connections) - [Pooling connections](#pooling-connections) - [Pool options](#pool-options) - [Pool events](#pool-events) - [Closing all the connections in a pool](#closing-all-the-connections-in-a-pool) - [PoolCluster](#poolcluster) - [PoolCluster Option](#poolcluster-option) - [Switching users and altering connection state](#switching-users-and-altering-connection-state) - [Server disconnects](#server-disconnects) - [Performing queries](#performing-queries) - [Escaping query values](#escaping-query-values) - [Escaping query identifiers](#escaping-query-identifiers) - [Preparing Queries](#preparing-queries) - [Custom format](#custom-format) - [Getting the id of an inserted row](#getting-the-id-of-an-inserted-row) - [Getting the number of affected rows](#getting-the-number-of-affected-rows) - [Getting the number of changed rows](#getting-the-number-of-changed-rows) - [Getting the connection ID](#getting-the-connection-id) - [Executing queries in parallel](#executing-queries-in-parallel) - [Streaming query rows](#streaming-query-rows) - [Piping results with Streams2](#piping-results-with-streams2) - [Multiple statement queries](#multiple-statement-queries) - [Stored procedures](#stored-procedures) - [Joins with overlapping column names](#joins-with-overlapping-column-names) - [Transactions](#transactions) - [Timeouts](#timeouts) - [Error handling](#error-handling) - [Exception Safety](#exception-safety) - [Type casting](#type-casting) - [Connection Flags](#connection-flags) - [Debugging and reporting problems](#debugging-and-reporting-problems) - [Running tests](#running-tests) - [Todo](#todo) ## Install ```sh $ npm install mysql ``` For information about the previous 0.9.x releases, visit the [v0.9 branch][]. Sometimes I may also ask you to install the latest version from Github to check if a bugfix is working. In this case, please do: ```sh $ npm install felixge/node-mysql ``` [v0.9 branch]: ## Introduction This is a node.js driver for mysql. It is written in JavaScript, does not require compiling, and is 100% MIT licensed. Here is an example on how to use it: ```js var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'me', password : 'secret' }); connection.connect(); connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) { if (err) throw err; console.log('The solution is: ', rows[0].solution); }); connection.end(); ``` From this example, you can learn the following: * Every method you invoke on a connection is queued and executed in sequence. * Closing the connection is done using `end()` which makes sure all remaining queries are executed before sending a quit packet to the mysql server. ## Contributors Thanks goes to the people who have contributed code to this module, see the [GitHub Contributors page][]. [GitHub Contributors page]: Additionally I'd like to thank the following people: * [Andrey Hristov][] (Oracle) - for helping me with protocol questions. * [Ulf Wendel][] (Oracle) - for helping me with protocol questions. [Ulf Wendel]: [Andrey Hristov]: ## Sponsors The following companies have supported this project financially, allowing me to spend more time on it (ordered by time of contribution): * [Transloadit]( (my startup, we do file uploading & video encoding as a service, check it out) * [Joyent]( * []( * [Holiday Extras]( (they are [hiring]( * [Newscope]( (they are [hiring]( If you are interested in sponsoring a day or more of my time, please [get in touch][]. [get in touch]: ## Community If you'd like to discuss this module, or ask questions about it, please use one of the following: * **Mailing list**:!forum/node-mysql * **IRC Channel**: #node.js (on, I pay attention to any message including the term `mysql`) ## Establishing connections The recommended way to establish a connection is this: ```js var mysql = require('mysql'); var connection = mysql.createConnection({ host : '', user : 'bob', password : 'secret' }); connection.connect(function(err) { if (err) { console.error('error connecting: ' + err.stack); return; } console.log('connected as id ' + connection.threadId); }); ``` However, a connection can also be implicitly established by invoking a query: ```js var mysql = require('mysql'); var connection = mysql.createConnection(...); connection.query('SELECT 1', function(err, rows) { // connected! (unless `err` is set) }); ``` Depending on how you like to handle your errors, either method may be appropriate. Any type of connection error (handshake or network) is considered a fatal error, see the [Error Handling](#error-handling) section for more information. ## Connection options When establishing a connection, you can set the following options: * `host`: The hostname of the database you are connecting to. (Default: `localhost`) * `port`: The port number to connect to. (Default: `3306`) * `localAddress`: The source IP address to use for TCP connection. (Optional) * `socketPath`: The path to a unix domain socket to connect to. When used `host` and `port` are ignored. * `user`: The MySQL user to authenticate as. * `password`: The password of that MySQL user. * `database`: Name of the database to use for this connection (Optional). * `charset`: The charset for the connection. This is called "collation" in the SQL-level of MySQL (like `utf8_general_ci`). If a SQL-level charset is specified (like `utf8mb4`) then the default collation for that charset is used. (Default: `'UTF8_GENERAL_CI'`) * `timezone`: The timezone used to store local dates. (Default: `'local'`) * `connectTimeout`: The milliseconds before a timeout occurs during the initial connection to the MySQL server. (Default: `10000`) * `stringifyObjects`: Stringify objects instead of converting to values. See issue [#501]( (Default: `'false'`) * `insecureAuth`: Allow connecting to MySQL instances that ask for the old (insecure) authentication method. (Default: `false`) * `typeCast`: Determines if column values should be converted to native JavaScript types. (Default: `true`) * `queryFormat`: A custom query format function. See [Custom format](#custom-format). * `supportBigNumbers`: When dealing with big numbers (BIGINT and DECIMAL columns) in the database, you should enable this option (Default: `false`). * `bigNumberStrings`: Enabling both `supportBigNumbers` and `bigNumberStrings` forces big numbers (BIGINT and DECIMAL columns) to be always returned as JavaScript String objects (Default: `false`). Enabling `supportBigNumbers` but leaving `bigNumberStrings` disabled will return big numbers as String objects only when they cannot be accurately represented with [JavaScript Number objects] ( (which h