欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql大小寫敏感導(dǎo)致程序無法啟動的問題

 更新時間:2023年11月04日 09:03:56   作者:何錦康  
這篇文章主要介紹了mysql大小寫敏感導(dǎo)致程序無法啟動的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

mysql大小寫敏感導(dǎo)致程序無法啟動

將數(shù)據(jù)庫轉(zhuǎn)移到centos服務(wù)器上之后,項目啟動一直報找不到XXX Table,但是數(shù)據(jù)庫中存在這個表,對比了一下發(fā)現(xiàn)報錯信息的表名發(fā)現(xiàn)是大寫字母,就考慮到了可能換了環(huán)境,區(qū)分大小寫了,于是更改了mysql的配置文件

1.先找到配置文件的位置

2.進入該目錄,編輯該配置文件

3.加上這樣一句話,1表示不區(qū)分,0表示區(qū)分

lower_case_table_names=1

再次啟動項目,啟動成功!

mysql表大小寫敏感規(guī)則引發(fā)的問題

踩坑原因

在部署一個工作流項目(flowable)時,該項目用到了自動創(chuàng)建表的一個機制,沒看源代碼但是大體意思就是檢測不到數(shù)據(jù)庫中有表的存在程序就自己創(chuàng)建。

windows下沒有問題,linux下報一些奇怪的錯誤。

排查

描述問題前先描述一下項目的關(guān)系因為的確有點亂 。

flowable 項目是要搭建的項目在gitee上托管,我們暫時稱之為f1然后這個項目又是基于github上的一個項目改的,這個項目我們暫時稱為f2。

程序自動建表如果完成的很好那當(dāng)然是大吉大利。自動建表操作是f2來做的,它所建的表都是些核心表,表名為大寫。前面說了f1 是在f2 上面擴展的那必然就會有自己的表。只依靠f2自動建表是不行的,項目根本跑不起來。f1提供了initsql,sql中包含了所有的表,有自己的還有f2的那些核心表,表名均為小寫。

部署過程先把服務(wù)器上的數(shù)據(jù)庫建好然后導(dǎo)入數(shù)據(jù),一切正常數(shù)據(jù)庫出現(xiàn)了一堆小寫的表。運行f1程序,報錯信息是一些表外建重復(fù)定義之類的。這時再看數(shù)據(jù)庫出現(xiàn)了很多大寫的表名。和小寫表名重復(fù)的。比如 act_ru_job ACT_RU_JOB。第一次看到有點懵。為什么windwos下沒有問題,到linux下就又問題了。把windows下的程序數(shù)據(jù)庫連接換為Linux的一樣報錯。這下明白肯定是操作系統(tǒng)間不同的機制導(dǎo)致出的幺蛾子。

瘋狂google了一番找到了相關(guān)信息。

在mysql中執(zhí)行下面語句

show variables like '%lower_case_table_names%';

表現(xiàn)的值有三種 0 1 2。

  • 0 linux 下默認規(guī)則,表名區(qū)分大小寫。
  • 1 windows 下默認規(guī)則,表名存儲在磁盤是小寫的,但是比較的時候是不區(qū)分大小寫。
  • 2 macos,下默認規(guī)則,表名存儲為給定的大小寫但是比較的時候是小寫的

這下才明白,程序為啥一直檢測不到表存在,然后自己創(chuàng)建。原因就是linux下大小寫嚴格區(qū)分的,改為和windwos下的值一樣就可以了。事情不會那么簡單。

限制

找到my.conf在[mysqld] 下添加 lower_case_table_names=1,保存重啟。mysql跑不起來,官方文檔上寫這個參數(shù)只能在數(shù)據(jù)庫初始化操作之前添加,如果數(shù)據(jù)庫已經(jīng)初始化完成了就不能再添加了,那么怎么辦呢?

如果沒有重要數(shù)據(jù)直接刪除數(shù)據(jù)目錄,執(zhí)行 mysqld --initialize --user=mysql --lower-case-table-names=1 要加上–user=mysql。不然數(shù)據(jù)目錄所有者是root啟動時會報權(quán)限錯誤。

有數(shù)據(jù)的話先導(dǎo)出設(shè)置好后再導(dǎo)入。

心得:

因為這個破問題搞了好幾個小時,實屬惡心。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql split函數(shù)用逗號分隔的實現(xiàn)

    mysql split函數(shù)用逗號分隔的實現(xiàn)

    這篇文章主要介紹了mysql split函數(shù)用逗號分隔的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 分享Mysql命令大全

    分享Mysql命令大全

    本文給大家介紹mysql命令大全相關(guān)知識,涉及到mysql命令相關(guān)知識,對此感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • 一條SQL語句在MySQL中是如何執(zhí)行的

    一條SQL語句在MySQL中是如何執(zhí)行的

    本篇文章會分析下一個sql語句在mysql中的執(zhí)行流程,包括sql的查詢在mysql內(nèi)部會怎么流轉(zhuǎn),sql語句的更新是怎么完成的,需要的朋友可以參考一下
    2021-10-10
  • 探究MySQL中varchar的定義長度

    探究MySQL中varchar的定義長度

    這篇文章主要介紹了探究MySQL中varchar的定義長度,文中主要對其長度究竟是字節(jié)還是字符做出了相關(guān)實驗,需要的朋友可以參考下
    2015-05-05
  • MySQL啟動報錯問題InnoDB:Unable to lock/ibdata1 error

    MySQL啟動報錯問題InnoDB:Unable to lock/ibdata1 error

    這篇文章主要介紹了MySQL啟動報錯問題InnoDB:Unable to lock/ibdata1 error,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • mysql觸發(fā)器之創(chuàng)建多個觸發(fā)器操作實例分析

    mysql觸發(fā)器之創(chuàng)建多個觸發(fā)器操作實例分析

    這篇文章主要介紹了mysql觸發(fā)器之創(chuàng)建多個觸發(fā)器操作,結(jié)合實例形式分析了mysql創(chuàng)建及使用多個觸發(fā)器的相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12
  • Mysql:The user specified as a definer (''xxx@''%'') does not exist的解決方案

    Mysql:The user specified as a definer (''xxx@''%'') does not

    今天小編就為大家分享一篇關(guān)于Mysql:The user specified as a definer ('xxx@'%') does not exist的解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Navicat Premium遠程連接MySQL數(shù)據(jù)庫的方法

    Navicat Premium遠程連接MySQL數(shù)據(jù)庫的方法

    這篇文章主要介紹了Navicat Premium遠程連接MySQL數(shù)據(jù)庫的方法,本文分步驟通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • mysql limit分頁優(yōu)化詳細介紹

    mysql limit分頁優(yōu)化詳細介紹

    MySQL最常用也最需要優(yōu)化的就是limit,MySQL的limit給分頁帶來了極大的方便,但數(shù)據(jù)量一大的時候,limit的性能就急劇下降,需要的朋友可以參考下
    2016-12-12
  • MySQL中使用load data命令實現(xiàn)數(shù)據(jù)導(dǎo)入的方法

    MySQL中使用load data命令實現(xiàn)數(shù)據(jù)導(dǎo)入的方法

    MySQL支持load data命令的數(shù)據(jù)導(dǎo)入,該方式比直接的insert的效率要高,按照官方的說法是要比insert語句快上20倍
    2013-10-10

最新評論