MySql 踩坑一时爽,一直踩啊一直爽...
 
以下记录刚踩的三个坑,emmm... 首先是远程机子上创建表错误(踩第一个坑),于是将本地机器 MySql 版本回退至和远程一致(踩第二个坑),最后在第二个坑里踩到了第三个坑。
 
Sequelize 创建表报错
 
针对 Sequelize 创建表的时候,报错 Specified key was too long; max key length is 767 bytes
 
原因:数据库针对索引列的长度限制为最大 767byte
 
至于为什么会加上索引? 因为 Sequelize 默认给列加唯一约束的时候会同时生成索引以达到约束唯一的时候效率更快,其实只是Sequelize做了个优化,容易让开发者误操作,Sequelize的issues上也有相关的讨论。
 
长度计算例子:
@Column({
type: Sequelize.VARCHAR(260),
charset:'utf8',
unique: true
})
desc:string
 
这里愿意只是想加唯一约束,但 Sequelize 默认同时加上了索引,于是数据库计算索引长度:utf8 按 3byte 计算,得出 260\*3 = 780 > 767,于是超出,报错。
 
解决方案:
方案一:不使用 Sequelize 提供的唯一约束标识,通过 sql 语句来添加
方案二:修改数据库对索引键长度的限制 : innodb_large_prefix 选项
方案三:将 VARCHAR 长度控制在 767/3 以内
 
Mac 安装 MySql 后重置密码
 
默认生成的密码在安装完后随提示弹出,难记且容易在弹出的时候被忽略,以下是修改密码的步骤。
 
操作前先明确 MySql 安装位置,一般默认是在 /usr/local/下,自行寻找。
 
1. 在 System Preferences > MySql 面板停止 MySql 服务 (或者终端使用命令)
  sudo /usr/local/mysql*/support-files/mysql.server stop
2. 以安全模式启动 MySql 服务,终端命令(这个命令是 ctrl+z 退出的)
  sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
3. 新开一个终端面板,执行命令,用 root 身份登录 mysql 服务,输入电脑的 root 密码
  sudo /usr/local/mysql/bin/mysql -u root
4. 这时候进入 mysql 服务环境了,注意终端的前缀是 mysql> 的,然后执行修改密码语句(注意:根据版本不同,字段也有所不同,可以通过 sql 语句先查看)
# 建议先查看再更新
# 查看
show columns from user from mysql
# 更新
UPDATE mysql.user SET authentication_string=PASSWORD('test@123'), password_expired='N' WHERE User='root';
5. 完成后通过 MySql 面板或者终端重启即可
 
安全模式启动后,可无需密码登录,所以歩骤 3-4 也可在数据库管理应用内操作~
 
MySql 命令行注意事项
 
命令行支持换行,所以当结束一行的时候需要以分号 ; 结尾。
 
由于习惯了单行输入即出结果,没注意支持分行的问题,所以就入了这个坑。
 
举个例子:
# 正确
show tables from mysql; # 正确
show tables # 这里回车
from mysql; # 错误
show tables from mysql # 这里回车,无反应,因为语句未结束 # 错误 因为支持分行
show tables from mysql # 然后误以为没反应,继续回车,重新操作
show tables from mysql; # 这时候会报错,因为语句变成了 show tables from mysql show tables from mysql;
 
刷着官网的文档也没能避免这些坑,心也是挺累的...
 

MySql 踩坑小记的更多相关文章

  1. Ubuntu 16.04 安装Mysql 5.7 踩坑小记

    title:Ubuntu 16.04 安装Mysql 5.7 踩坑小记 date: 2018.02.03 安装mysql sudo apt-get install mysql-server mysql ...

  2. CentOS7.4安装MySQL踩坑记录

    CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...

  3. dubbo 2.7应用级服务发现踩坑小记

    本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 背景 本文记录最近一位读者反馈的dubbo 2.7.x中应用级服务发现的问题,关于dubbo应 ...

  4. Asp.Net Core Identity+EFCore + Mysql踩坑记录

    搭建基础框架准备试试传说中的Identity,本以为很顺利,结果一路踩了N多坑 遂就把过程记录下来.方便自己以后查看,也希望能帮到遇到同样问题的朋友. 1.首先,引入Identity需要的类库,还有M ...

  5. async语法升级踩坑小记

    从今年过完年回来,三月份开始,就一直在做重构相关的事情. 就在今天刚刚上线了最新一次的重构代码,希望高峰期安好,接近半年的Node.js代码重构. 包含从callback+async.waterfal ...

  6. MySql踩坑总结

    衣带渐宽终不悔,为伊消得人憔悴,众里寻他千百度,蓦然回首,那人却在灯火阑珊处好通顺的句子哈哈 转了那么多弯,才明白问题就在一个地方.睡觉之前想明白了问题,还是经验太少.王国维的治学三境界: 昨夜西风凋 ...

  7. 【MySql系列】MySql踩坑系列

    问题一:远程登录报错Host '192.168.181.201' is not allowed to connect to this MySQL server 解决: 问题二:MySql access ...

  8. 支付宝使用流程和踩坑小记(附Demo)

    # 支付宝使用整理 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym, ...

  9. 在 ASP.NET Core 中使用 MySql 踩坑记录

    使用 Pomelo.EntityFrameworkCore.MySql 生成 MySQL 数据库 关于如何使用请查看项目文档即可 组件地址:https://github.com/PomeloFound ...

随机推荐

  1. Scrapy爬虫框架的学习

    第一步安装 首先得安装它,我使用的pip安装的 因为我电脑上面安装了两个python,一个是python2.x,一个是python3.x,所以为了区分,所以,在cmd中,我就使用命令:python2 ...

  2. 根据缺少的so,安装相关的软件

    http://blog.csdn.net/dianyueneo/article/details/8161350. ubuntu缺少libGL.so sudo apt-get install apt-f ...

  3. python语法之正则

    1.正则表达式是用来干嘛的? 用来匹配字符串的  ,其中正则是意思是模糊匹配. 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通 ...

  4. Linux的历史发展及应用

    Linux的基本介绍: Linux的历史: 操作系统,英语Operating System简称为OS.说道操作系统就需要先讲一讲Unix,UNIX操作系统,是一个强大的多用户.多任务操作系统,支持多种 ...

  5. Deployment descriptor

    部署描述符是JavaEE程序常见的一部分,部署一个Servlet 3 或以上应用程序是一件轻而易举的事.通过Servlet注解,对于不太复杂的应用程序,甚至可以部署没有描述符的Servlet/JSP应 ...

  6. Java中Json字符串直接转换为对象(包括多层List集合)

    使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...

  7. Blueking bk 蓝鲸开发环境搭建

    首先根据文档安装各种东西 http://docs.bk.tencent.com/develop_center/ops/unified.html#installation 完后在在vagrantfile ...

  8. tomcat配置层了解一下 idea打包 java打包部署

    Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml配置文件中的Connector节点 ...

  9. 零基础Windows + JAVA(jdk)环境搭建以及eclipse安装和使用

    关于java的环境搭建其实网上有很多种,下面小编就自己来操作一下吧~ java的环境搭建最主要的就是jdk的安装及环境变量设置,好了,来看看安装步骤: 一.JDK的下载与安装(java安装包)  JD ...

  10. js获取当前页面的url网址信息小汇总

    在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结. 下面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblog ...