in header_common.htm --> -->

52AV手機A片王|52AV.ONE

 找回密碼
 立即註冊
快捷導航

請登入會員才有搜尋功能
     
查看: 12829|回復: 0
打印 上一主題 下一主題

[mysql] mysqld 升級到8以上遇到的問題

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2021-3-14 13:06:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

(1)( R5 Y* }: Z; m0 p% \: @
php連到mysql出現2行errors : (discuz網頁出現的是連接到mysql錯誤表格,需自行寫一隻連接mysql的php程式來測試)% m  s  U( H3 D3 n' ]% z1 h
' p0 ]" B6 h- f. ~( G
mysqli_real_connect(): Server sent charset (255) unknown to the client. Please, report to the developers0 A1 R! V' n9 c* N
mysqli_real_connect(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers
! r* m& i7 i5 {原因:
* D6 K0 n* J- V* V2 ~9 h
在MySQL 8.0.21中,caching_sha2_password是默認的身份驗證插件,而不是以往的mysql_native_password。所以和php不相容。可以降級php,也可以修改MySQL的配置。 吾人決定修改MySQL的配置:9 b  M% U, H# ?+ L$ b+ q
vi /etc/my.cnf  加入下列:  ^3 v; w+ H, z9 T% O
[mysqld]9 E- Z2 \1 ~! y% i, u: g* G, s
" Z9 a% k) q. Q
character-set-server=utf8+ H- F! _$ g# G
default_authentication_plugin=mysql_native_password+ {9 c' K% n7 {  F" l
validate_password.policy=LOW) f  O2 I" c: Z1 n) E: N  `
[mysql]) W9 l6 D& [0 C$ a$ D4 l
default-character-set=utf8& p5 Z9 r; |! K% i

) g7 n% Q; F1 M7 v1 Z* {' l# v[client]0 a. H: n  T6 Z& l; c
default-character-set=utf8
% A, X# @$ T+ K9 a5 I* d  \8 \" }( d
然後重啟mysqld
+ C) F. W# U- a8 \/ C4 lservice mysqld restart

% ~4 A4 a5 k: U+ O( ~; ^% b0 P% |

+ R* t' s6 \: w& H" F: {/ ^! r重啟後可能須做下列動作:
6 h7 x  i1 j- w- s  t# ?# tmysql -u roor -p  
$ X4 @9 s" U/ W7 N1 v: @# K* iSHOW VARIABLES LIKE 'validate_password%';) Q6 v6 c9 v# f( D% ?
SET GLOBAL validate_password_policy=LOW;ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密碼';搞定!!' c, ~. u! c/ K3 {) |

9 J/ l+ ~0 [4 |# ], R註: mysqld啟動時,在/var/log/mysql/mysqld.log紀錄著:
註: 可以先寫支php程式以測試 ~~~) H' A- M/ G$ T4 n7 D1 w, P/ z. }
  1. <?% }6 i3 I8 n( n0 A$ V
  2. $hostname = "x.x.x.x";
    ! u$ v! S: O1 N% R( @/ k
  3. $database = "db_name";
    : ?4 J* \' I. x8 C& q6 j! ]0 T! L
  4. $username = "user_name";& S$ P0 C6 f2 s+ g0 _  X5 u
  5. $password = "pwd";
    + k8 @5 b& j- |3 U1 h+ k

  6. # w$ O# E+ _2 x3 G7 ^8 C
  7. $conn = mysqli_connect($hostname, $username, $password,$database) or trigger_error(mysql_error(),E_USER_ERROR);( Q; C& }/ U: D9 u  ^
  8. mysqli_query($conn ,"SET NAMES utf8");
    4 Y/ o& H1 F9 J+ H& d4 A, w

  9. 9 n% }: M$ M% B5 \+ j
  10. $sql = "select count(*) as total from " .  "table_name";1 K; ^0 f& ?; W
  11. $rec = mysqli_fetch_assoc(mysqli_query( $conn,$sql));+ h1 A7 M) [. D! ^. |
  12. echo $rec['total'];
    ' D2 L2 w! X, r! G! _/ d/ B
  13. mysqli_close($conn);& X, a) a" g- ^
  14. ?>
複製代碼
遊客,本帖隱藏的內容需要積分高於 999999999999 才可瀏覽,您當前積分為 0
1 K- c  S9 ^2 }

: w/ l& [$ F$ C) V6 y
. t. v& u$ o* Q9 S# Z$ f# `當php 7.2.24  connect to mysql server,出現 :
  1. PHP Fatal error:  Uncaught Error: Call to undefined function mysqli_connect() in /test/connectmysql8.php:9) {9 y1 D+ n" x6 L7 z
  2. Stack trace:' H* R. j9 [" o/ }% R3 v+ P
  3. #0 {main}; T: H0 N+ M. }! Z
  4.   thrown in /test/connectmysql8.php on line 9
    7 j# H1 l$ D  Y' v

  5. + }! ?& i" }) C! S* z, e
  6. Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /test/connectmysql8.php:9' @$ b% ^- L( k0 `; H7 l. I
  7. Stack trace:
    , m, J6 c) Q2 x$ e2 _, m, V
  8. #0 {main}5 j6 J: H* H4 F8 A4 J
  9.   thrown in /test/connectmysql8.php on line 9
複製代碼
這是版本相依的問題,只要 yum install php-mysqlnd  或 yum install php-mysqli 即可
% }$ l" I! J$ c$ J
0 S$ ]1 M# m0 J8 A8 r
0 w; o  ^; v8 s4 X' b, R: _[Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
* Z4 p  n4 r' b8 G: ~! N0 W說明: 千萬不能照它建議用"UTF8MB4",否則無法成功啟動
& ]' W. T2 m( o9 G; k4 N; F/ c' |4 ^' r  b2 }- z! m5 s
(2)
: T1 V7 }$ E. Y8 w6 R(1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'system>0' at line 10 x- f6 ]$ M; c) h, V
SELECT COUNT(*) FROM common_usergroup WHERE type='special' and system>0
1 D4 K" ?4 V: X
5 e6 U1 H9 u$ T' }. z: U, Q(1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups = '' AND starttime<=1532077291 AND (endtime>=1532077291 OR endtime=0) ORD' at line 1( M8 D/ }# Z0 o& G/ o6 h. ~
SELECT * FROM forum_announcement WHERE type!=2 AND groups = '' AND starttime<=1532077291 AND (endtime>=1532077291 OR endtime=0) ORDER BY displayorder, starttime DESC, id DESC LIMIT 14 \7 T) [9 V( h+ v( a$ U, h( W2 u/ y

/ n: P, K3 |2 w4 b因為MySQL 8.0+將system和groups作為了關鍵字,所以不能直接在SQL中將system和groups這兩個詞作為數據庫、數據表、數據表字段中的任意一種使用,如果數據庫名或數據表名或數據表字段名使用了system或groups作為名字,必須使用一對反引號引用起來。寫作`system`或`groups`。& q) ?2 t$ r! m

: t8 {. v# m  u* r& R5 q第一個錯誤需要找到Discuz!目錄中的source\class\table\table_common_usergroup.php,- |5 i& r- `& ^8 s; @8 A
將文件中所有的system全部改成`system`,保存後重新上傳到服務器的相同目錄即可。. x8 B) p6 c# v7 M
, @- g: y  M( `& L
第二個錯誤需要找到Discuz!目錄下中的source\class\table\table_forum_announcement.php,$ m* I" ]4 U' D8 b& W6 U  g% a2 ~
將文件中所有的groups全部改為`groups`,保存後重新上傳到服務器的相同目錄即可。3 Q/ b4 _0 J1 \! n
9 C- m7 h0 i% l/ t' I
如果在MySQL 8+環境下安裝Discuz!,在安裝前需要給install\data\install.sql文件中沒有加引號的所有system逐一添加一對反引號保存重新上傳到服務器的相同目錄,否則也會出現SQL語法錯誤。0 {4 h) Q$ j% o
* ]4 k3 Z) y* `( G* j
為了避免語法錯誤,在寫SQL語句時,一定要為所有的數據庫名、數據表名、數據表字段名全部添加一對反引號,像Discuz!這樣的寫法是很不妥的。
% r& o7 E1 @8 |* n' E以上參考:   升級到 MySQL 8.0+ 後Discuz! 更新緩存時出現SQL語法錯誤

3 W3 a9 i% h* H) z6 g- z% y3 G& G+ u% U3 G
7 F9 q3 U1 R9 ~6 T
5 k( A8 ]  U1 m$ T- q# S
  ?/ t9 C. ]/ |: I& ~/ a1 D
-->
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則


-->

聚BT福利

本區塊內容依據『電腦網路內容分級處理辦法』為限制級網站,限定年滿18歲以上或達當地國家法定年齡人士方可進入,且願接受本站各項條款,未滿18歲 謝絕進入瀏覽。為防範未滿18歲之未成年網友瀏覽網路上限制級內容的圖文資訊,建議您可進行網路內容分級組織ICRA分級服務的安裝與設定。 (為還給愛護 本站的網友一個純淨的論壇環境,本站設有管理員)

QQ|小黑屋|手機板|52AV手機A片王

GMT+8, 2025-1-2 17:12 , Processed in 0.066521 second(s), 16 queries .

連絡站長.廣告招商

[email protected] | QQ:2405733034     since 2015-01

裸聊妹 快速回復 返回頂部 返回列表