onvno / pokerface

日常技术文章阅读整理
3 stars 0 forks source link

20190523 - MySQL #30

Open onvno opened 5 years ago

onvno commented 5 years ago

Update更新

UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]

// 更新某一列
update table_name set field=new-value where condition;

实际操作

UPDATE sps_pv SET pv=pv+1 WHERE date=20190502

Select

SELECT pv from sps_pv WHERE date=20190502;

MySQL查询指定行的记录

MySQL查询指定行的记录

-- 2.2 查询第n行
select * from table1 limit n-1,1;

 -- 2.1 查询连续的多行记录(第n~m行)
   select * from table1  limit n-1,m-n+1;

nodejs同步

nodejs使用async/await同步操作mysql

const mysql = require('mysql')
const pool = mysql.createPool({
  host     :  '127.0.0.1',
  user     :  'root',
  password :  '123456',
  database :  'my_database'
})

// 接收一个sql语句 以及所需的values
// 这里接收第二参数values的原因是可以使用mysql的占位符 '?'
// 比如 query(`select * from my_database where id = ?`, [1])

let query = function( sql, values ) {
  // 返回一个 Promise
  return new Promise(( resolve, reject ) => {
    pool.getConnection(function(err, connection) {
      if (err) {
        reject( err )
      } else {
        connection.query(sql, values, ( err, rows) => {

          if ( err ) {
            reject( err )
          } else {
            resolve( rows )
          }
          // 结束会话
          connection.release()
        })
      }
    })
  })
}

module.exports =  query
onvno commented 4 years ago

mysql安装及基本问题

安装:mac 安装mysql详细教程

安装后需要添加全局路径:

$ vi ~/.zshrc
$ PATH="$PATH":/usr/local/mysql/bin

$ source ~/.zshrc

连接提示不支持认证协议

解决Node.js mysql客户端不支持认证协议引发的“ER_NOT_SUPPORTED_AUTH_MODE”问题

导致这个错误的原因是,目前,最新的mysql模块并未完全支持MySQL 8的“caching_sha2_password”加密方式,而“caching_sha2_password”在MySQL 8中是默认的加密方式。因此,下面的方式命令是默认已经使用了“caching_sha2_password”加密方式,该账号、密码无法在mysql模块中使用。

解决:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.12 sec)

连接错误:SequelizeAccessDeniedError

需要设置链接规则,未测试:

$ GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password';
$ flush privileges;