一般我們在Linux下執(zhí)行某些外部程序的時候可能會提示找不到共享庫的錯誤, 比如:
tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory
原因一般有兩個, 一個是操作系統(tǒng)里確實沒有包含該共享庫(lib*.so.*文件)或者共享庫版本不對, 遇到這種情況那就去網(wǎng)上下載并安裝上即可.
另外一個原因就是已經(jīng)安裝了該共享庫, 但執(zhí)行需要調(diào)用該共享庫的程序的時候, 程序按照默認(rèn)共享庫路徑找不到該共享庫文件.
所以安裝共享庫后要注意共享庫路徑設(shè)置問題, 如下:
1) 如果共享庫文件安裝到了/lib或/usr/lib目錄下, 那么需執(zhí)行一下ldconfig命令
ldconfig命令的用途, 主要是在默認(rèn)搜尋目錄(/lib和/usr/lib)以及動態(tài)庫配置文件/etc/ld.so.conf內(nèi)所列的目錄下, 搜索出可共享的動態(tài)鏈接庫(格式如lib*.so*), 進而創(chuàng)建出動態(tài)裝入程序(ld.so)所需的連接和緩存文件. 緩存文件默認(rèn)為/etc/ld.so.cache, 此文件保存已排好序的動態(tài)鏈接庫名字列表.
2) 如果共享庫文件安裝到了/usr/local/lib(很多開源的共享庫都會安裝到該目錄下)或其它"非/lib或/usr/lib"目錄下, 那么在執(zhí)行l(wèi)dconfig命令前, 還要把新共享庫目錄加入到共享庫配置文件/etc/ld.so.conf中, 如下:
#?cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
#?echo "/usr/local/lib" >> /etc/ld.so.conf
#?ldconfig
3) 如果共享庫文件安裝到了其它"非/lib或/usr/lib" 目錄下,? 但是又不想在/etc/ld.so.conf中加路徑(或者是沒有權(quán)限加路徑). 那可以export一個全局變量LD_LIBRARY_PATH, 然后運行程序的時候就會去這個目錄中找共享庫.?
LD_LIBRARY_PATH的意思是告訴loader在哪些目錄中可以找到共享庫. 可以設(shè)置多個搜索目錄, 這些目錄之間用冒號分隔開. 比如安裝了一個mysql到/usr/local/mysql目錄下, 其中有一大堆庫文件在/usr/local/mysql/lib下面, 則可以在.bashrc或.bash_profile或shell里加入以下語句即可:
export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH
一般來講這只是一種臨時的解決方案, 在沒有權(quán)限或臨時需要的時候使用.
實際中遇到的是未找到j(luò)ava動態(tài)庫的問題:解決時
vi?/etc/ld.so.conf
/opt/jdk1.8.0_121/jre/lib/amd64/server? ? 文件末尾加上java安裝路徑相關(guān)的配置
2钞楼、 ? ? "this is incompatible with sql_mode=only_full_group_by"錯誤解決方案
? ? ? ?a蛔垢、原理層面
? ? ?? 這個錯誤發(fā)生在mysql 5.7 版本及以上版本會出現(xiàn)的問題:
? ? ?? mysql 5.7版本默認(rèn)的sql配置是:sql_mode="ONLY_FULL_GROUP_BY"轿塔,這個配置嚴(yán)格執(zhí)行了"SQL92標(biāo)準(zhǔn)"。
? ? ?? 很多從5.6升級到5.7時刺桃,為了語法兼容匈睁,大部分都會選擇調(diào)整sql_mode,使其保持跟5.6一致蛋辈,為了盡量兼容程序属拾。
? ? ? ? b、sql層面
? ? ? ? 在sql執(zhí)行時冷溶,出現(xiàn)該原因:
? ? ? ? 簡單來說就是:輸出的結(jié)果是叫target list渐白,就是select后面跟著的字段,還有一個地方group by column逞频,就是
? ? ? ? group by后面跟著的字段纯衍。由于開啟了ONLY_FULL_GROUP_BY的設(shè)置,所以如果一個字段沒有在target list?
? ? ? ? 和group by字段中同時出現(xiàn)苗胀,或者是聚合函數(shù)的值的話襟诸,那么這條sql查詢是被mysql認(rèn)為非法的瓦堵,會報錯誤。
? 1)查看sql_mode的語句如下
select @@GLOBAL.sql_mode;
2)解決方案
?? 需修改mysql配置文件歌亲,通過手動添加sql_mode的方式強制指定不需要ONLY_FULL_GROUP_BY屬性菇用,
?? my.cnf位于etc文件夾下,vim下光標(biāo)移到最后陷揪,添加如下:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
? ? ?? 重啟mysql服務(wù)刨疼,順利解決。?
3鹅龄、rabbitmq相關(guān)報錯揩慕,springboot-rabbitmq 問題access to vhost '/' refused for user 權(quán)限問題
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method: #method<connection.close>(reply-code=530, reply-text=NOT_ALLOWED - access to vhost '/' refused for user 'mq', class-id=10, method-id=40)
原因:
用戶‘mq’沒有權(quán)限訪問‘/’
1)rabbitmqctl list_users? ? ?列出用戶權(quán)限
2) rabbitmqctl ?set_permissions -p / mq '.*' '.*' '.*'??
該命令使用戶mq具有‘/’這個virtual host中所有資源的配置、寫扮休、讀權(quán)限以便管理其中的資源
4迎卤、啟動服務(wù)時報錯“unsupported major.monior version52.0”---目前Jdk版本不支持該系統(tǒng)
需要更換jdk
5、啟動服務(wù)找不到相關(guān)配置文件玷坠,tomcat啟動配置文件中加入相關(guān)的引導(dǎo)啟動命令
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m -Duser.timezone=GMT+8 -Dspring.profiles.active=test"