日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MySql 踩坑小记

發布時間:2025/7/25 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySql 踩坑小记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySql 踩坑一時爽,一直踩啊一直爽...

以下記錄剛踩的三個坑,emmm... 首先是遠程機子上創建表錯誤(踩第一個坑),于是將本地機器 MySql 版本回退至和遠程一致(踩第二個坑),最后在第二個坑里踩到了第三個坑。

Sequelize 創建表報錯

錯誤信息:Specified key was too long; max key length is 767 bytes

針對 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/下,自行尋找。

  • 在 System Preferences > MySql 面板停止 MySql 服務 (或者終端使用命令)
  • sudo /usr/local/mysql*/support-files/mysql.server stop
  • 以安全模式啟動 MySql 服務,終端命令(這個命令是 ctrl+z 退出的)
  • sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  • 新開一個終端面板,執行命令,用 root 身份登錄 mysql 服務,輸入電腦的 root 密碼
  • sudo /usr/local/mysql/bin/mysql -u root
  • 這時候進入 mysql 服務環境了,注意終端的前綴是 mysql> 的,然后執行修改密碼語句(注意:根據版本不同,字段也有所不同,可以通過 sql 語句先查看)
  • # 建議先查看再更新 # 查看show columns from user from mysql # 更新UPDATE mysql.user SET authentication_string=PASSWORD('test@123'), password_expired='N' WHERE User='root';;
  • 完成后通過 MySql 面板或者終端重啟即可
  • 安全模式啟動后,可無需密碼登錄,所以歩驟 3-4 也可在數據庫管理應用內操作~

    MySql 命令行注意事項

    命令行支持換行,所以當結束一行的時候需要以分號 ; 結尾。
    由于習慣了單行輸入即出結果,沒注意支持分行的問題,所以就入了這個坑。

    舉個例子:

    show tables from mysql; # 正確show tablesfrom mysql; # 正確show tables from mysql # 錯誤show tables from mysql # 然后誤以為沒反應,繼續回車重新操作show tables from mysql; # 銜接上一行,這時候會報錯,因為語句變成了 show tables from mysql show tables from mysql;

    刷著官網的文檔也沒能避免這些坑,心也是挺累的...

    總結

    以上是生活随笔為你收集整理的MySql 踩坑小记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。