" |, K! J1 _' n) `; k( V5 i( W* }1 T- I
當php 7.2.24 connect to mysql server,出現 :
PHP Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /test/connectmysql8.php:9 3 b+ a. z7 u c
Stack trace:7 [# N* a* S& x8 F" S) Y: S
#0 {main} 0 R: Z7 F) }: j/ I
thrown in /test/connectmysql8.php on line 90 C. G$ K! E) {9 S" x
* s5 ]7 S" g7 I& ~4 |
Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /test/connectmysql8.php:9 ; t$ f: T) {5 T) d
Stack trace:: f9 _) O- E6 v- L8 O7 Y- j
#0 {main} 3 D$ c& d6 }/ o' x9 w! K" `1 A. W; b
thrown in /test/connectmysql8.php on line 9
複製代碼
這是版本相依的問題,只要 yum install php-mysqlnd 或 yum install php-mysqli 即可 0 d6 v- }7 z$ l% V9 F: Y 2 I, a# w; w: H% B+ z3 f! b $ T* v, l: q. i- m[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. 2 R! k, [, a2 R }說明: 千萬不能照它建議用"UTF8MB4",否則無法成功啟動 ; U6 d1 o# e8 ]' n+ g& @( X: c! L D; @* U
(2)2 ~+ v4 k" w& y4 b
(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 1 " e3 J8 }4 o( B9 s+ G8 TSELECT COUNT(*) FROM common_usergroup WHERE type='special' and system>0) | s9 P- Y7 h& g1 q
4 @4 O/ E0 `! x' R$ A(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 4 G; W. i. P- F. p5 W3 R* sSELECT * 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 1 2 M: f5 [- D ^" f; x7 z- V/ y7 e6 L: {3 o( e
因為MySQL 8.0+將system和groups作為了關鍵字,所以不能直接在SQL中將system和groups這兩個詞作為數據庫、數據表、數據表字段中的任意一種使用,如果數據庫名或數據表名或數據表字段名使用了system或groups作為名字,必須使用一對反引號引用起來。寫作`system`或`groups`。 P; O& ~$ P% |" q! v7 F: Y2 h( {. r- j+ s+ Y j
第一個錯誤需要找到Discuz!目錄中的source\class\table\table_common_usergroup.php, $ w: |( U( w5 I* K0 \% q將文件中所有的system全部改成`system`,保存後重新上傳到服務器的相同目錄即可。4 C3 p* U5 i# c' S: K
3 [6 O0 H1 I" h X( P2 {! j
第二個錯誤需要找到Discuz!目錄下中的source\class\table\table_forum_announcement.php, ) Q$ T* |! F/ s8 J0 Q5 R2 Y ]& [2 R將文件中所有的groups全部改為`groups`,保存後重新上傳到服務器的相同目錄即可。 * [1 C3 c8 T. C0 U4 r 3 K, k8 H. U d( m如果在MySQL 8+環境下安裝Discuz!,在安裝前需要給install\data\install.sql文件中沒有加引號的所有system逐一添加一對反引號保存重新上傳到服務器的相同目錄,否則也會出現SQL語法錯誤。7 m6 D. b" L. i1 D6 F& R& l5 Q- t
0 U( q; _6 m, |- S; }- n) ?為了避免語法錯誤,在寫SQL語句時,一定要為所有的數據庫名、數據表名、數據表字段名全部添加一對反引號,像Discuz!這樣的寫法是很不妥的。 # Y1 d2 Z/ O4 R$ V1 [7 l g$ C" e以上參考: 升級到 MySQL 8.0+ 後Discuz! 更新緩存時出現SQL語法錯誤3 k& y& a) f! ^4 c$ v