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. resin4配置之一个resin下多个app的正确配置方法

    可能是因为resin4出来不久的原因,很多人对一个resin配置多个app不是很了解,经过几个小时的研究,有了一些小的成果,在此分享一下: 在开发的时候很多人习惯了一个resin下配置多个app,习惯 ...

  2. JDK工具 javap

    javap -c [ClassName]  编译为汇编语言

  3. HDU 6377 度度熊看球赛 (计数DP)

    度度熊看球赛 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  4. input checkbox复选框取值

    <table> <!--列表表头 开始 --> <tr class="ui-widget ui-state-hover" style="he ...

  5. 摘录<奇特的一生>1~4——[苏]格拉宁

    一 只有在不实事求是的时候,事实才会叫人感兴趣. 虚构的人物任人摆布,并且纤毫毕露--他的一切想法意图,他的过去和未来,作者都一清二楚. 我还有一个任务:向读者灌输一些有用的知识,介绍些材料. 是一个 ...

  6. java 调用 api接口

    /* * Copyright 2018 textile.com All right reserved. This software is the * confidential and propriet ...

  7. 【MySql】启动/停止

    一.启动 1.查看启动命令所在目录 macdeMacBook-Pro:~ mac$ ps -ef|grep mysql 2.进入命令目录 macdeMacBook-Pro:~ mac$ cd /usr ...

  8. EasyUI 学习(1)-Tooltip(提示框)

    一.创建组件 Tooltip不依赖其他组件 1.使用class加载 <a href="#" class="easyui-tooltip" title=&q ...

  9. Robust Influence Maximization

    一.   研究背景 在社会和经济网络中,影响最大化问题在过去十年中得到广泛的研究,由于其广泛应用于病毒式营销[1,2],突破检测[3],谣言监测[4]等.例如公司可以通过向初始用户(称为种子)发送免费 ...

  10. 虚拟机找不到/mnt/hgfs挂载目录——debian与 vmware

    如果在安装好 VMware Tools 并在设置里面设定好共享目录之后仍然找不到 /mnt/hgfs 默认挂载目录,那么尝试以下步骤: 1. 确认VMware Tools 和共享目录设定已经完成: 2 ...