文档章节

MySql 踩坑小记

o
 osc_w9s1w4o0
发布于 2019/03/28 16:38
字数 822
阅读 13
收藏 0

精选30+云产品,助力企业轻松上云!>>>

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;
 
刷着官网的文档也没能避免这些坑,心也是挺累的...
 
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
MySql 踩坑小记

MySql 踩坑一时爽,一直踩啊一直爽... 以下记录刚踩的三个坑,emmm... 首先是远程机子上创建表错误(踩第一个坑),于是将本地机器 MySql 版本回退至和远程一致(踩第二个坑),最后在第二个坑里...

野兽'
2019/03/28
0
0
一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库

阅读目录 1.关于Power BI的版本信息 2.Power BI连接Oracle踩坑记 3.连接Mysql数据库 4.参考文献与资料   说起Oracle数据库,以前没用过Oracle不知道,但是这1年用Oracle后,发现真的是想狂...

老朱第八
2018/01/09
0
0
【详记MySql问题大全集】四、设置MySql大小写敏感(踩坑血泪史)

系列目录 一、安装MySql 二、安装并破解Navicat 三、没有my.in配置文件怎么办 四、设置MySql的大小写敏感 五、重置MySql登陆密码 这一篇可以说是我的踩坑的血泪史了。。。 MySql在Windows下默...

osc_8ouyb53z
2018/07/30
1
0
【详记MySql问题大全集】四、设置MySql大小写敏感(踩坑血泪史)

系列目录 一、安装MySql 二、安装并破解Navicat 三、没有my.in配置文件怎么办 四、设置MySql的大小写敏感 五、重置MySql登陆密码 这一篇可以说是我的踩坑的血泪史了。。。 MySql在Windows下默...

在7楼
2018/07/30
0
0
记安装MySQL数据库

记录一次自己动手安装MySQL数据库所踩的坑 MySQL安装包与操作系统匹配 安装包有amd和Intel,32位、64位多种组合需要确认仔细使用者操作系统和CPU型号 例如我使用的是CentOS 6.8版本(32位)安...

osc_em4ukz8o
03/22
1
0

没有更多内容

加载失败,请刷新页面

加载更多

浅谈对python pandas中 inplace 参数的理解

这篇文章主要介绍了对python pandas中 inplace 参数的理解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 pandas 中 inplace 参数在很多函数中都会有,它的作用是:是否...

Linux就该这么学
46分钟前
20
0
C++ 从基本数据类型说起

前言 int 在32位和64位操作系统,都是四个字节长度。为了能编写一个在32位和64位操作系统都能稳定运行的程序,建议采用std::int32_t 或者std::int64_t指定数据类型。*与long随操作系统子长变...

osc_sxdofc9c
46分钟前
9
0
游戏音乐的作用以及起源

游戏音乐是由特殊的音乐、语言符号、美学符号组成,在电子游戏的发展下,游戏音乐越来越成熟,游戏音乐与美术相融合,能够带给玩家视觉与声音的感官冲击,形成游戏音乐所具有的独特的审美效果...

奇亿音乐
47分钟前
10
0
2020,最新Model的设计-APP重构之路

很多的app使用MVC设计模式来将“用户交互”与“数据和逻辑”分开,而model其中一个重要作用就是持久化。下文中设计的Model可能不是一个完美的,扩展性强的model范例,但在我需要重构的app中,...

osc_mfzkzkxi
47分钟前
4
0
面对职业瓶颈,iOS 开发人员应该如何突破?

我们经常看到 iOS 开发人员(各种能力水平都有)的一些问题,咨询有关专业和财务发展方面的建议。 这些问题有一个共同点:前面都会说“我现在遇到了职业困境”,然后会问一些诸如“我是否应该...

osc_gfpedeca
48分钟前
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部