[hide=d100000000000000000000,999999999999]於video1主機下 /test/connectmysql8.php[/hide]. l6 r P* E2 R- [# q+ q' q
- I, l* `7 n/ Y3 ]' x
/ w1 o' E& ^$ H當php 7.2.24 connect to mysql server,出現 :
PHP Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /test/connectmysql8.php:9 L7 O( {6 x1 B
Stack trace:+ m1 e7 G5 j9 L; Q% K7 A
#0 {main} 1 ~6 Y1 k2 B% \: ]% u* s
thrown in /test/connectmysql8.php on line 9 U3 v, x4 n8 `* s5 B1 t8 j
6 t* F. p( N! I- q& M( o7 s# x
Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /test/connectmysql8.php:9 ( F6 c" \; w! [' U( K4 r" Y2 p
Stack trace:) b) C7 j+ j1 u7 ~, [& N
#0 {main}! @* g' B: M- D( R/ C
thrown in /test/connectmysql8.php on line 9
複製代碼
這是版本相依的問題,只要 yum install php-mysqlnd 或 yum install php-mysqli 即可& i/ J2 K: h2 M& f4 ^
) k4 J! Q# f2 Q6 a9 a
& c- e) \+ m5 a! U
[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.$ j- U0 z9 K; O+ e; P5 x" c- ^1 O; `! d
說明: 千萬不能照它建議用"UTF8MB4",否則無法成功啟動 , n& A, r; |8 b& m5 L6 T/ ]5 d" z# M1 B; i4 o
(2) 8 s: {8 h! p0 J(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 6 X" B7 G0 Z- N: H. dSELECT COUNT(*) FROM common_usergroup WHERE type='special' and system>0+ H8 M9 m5 P" F9 C; V! N6 B. P( [: h
) W+ @" T* F4 Z2 u: D: J* }* 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& D6 y3 s+ `4 {- o. m
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 1 " e2 P" Q2 A. t$ ]& Y8 ?6 w; @$ e* `( E6 \3 l3 f
因為MySQL 8.0+將system和groups作為了關鍵字,所以不能直接在SQL中將system和groups這兩個詞作為數據庫、數據表、數據表字段中的任意一種使用,如果數據庫名或數據表名或數據表字段名使用了system或groups作為名字,必須使用一對反引號引用起來。寫作`system`或`groups`。2 h# m$ }( X! }& g8 a: s
, L+ b* \% B3 ]0 W# o. s0 ]
第一個錯誤需要找到Discuz!目錄中的source\class\table\table_common_usergroup.php,% ]+ a( K4 R8 k1 @
將文件中所有的system全部改成`system`,保存後重新上傳到服務器的相同目錄即可。( K& o. J, s+ v: A% B
0 c( g6 W& ^9 y g$ B第二個錯誤需要找到Discuz!目錄下中的source\class\table\table_forum_announcement.php,* Z0 k4 ]$ j5 |0 }, G% b
將文件中所有的groups全部改為`groups`,保存後重新上傳到服務器的相同目錄即可。) F9 E0 |$ X6 C! k
" _4 K& u; l3 n" U3 {' Q1 x* O$ U
如果在MySQL 8+環境下安裝Discuz!,在安裝前需要給install\data\install.sql文件中沒有加引號的所有system逐一添加一對反引號保存重新上傳到服務器的相同目錄,否則也會出現SQL語法錯誤。 * Q4 E# U- B$ \- A2 {2 ]- f! Q2 p/ A4 `$ r
為了避免語法錯誤,在寫SQL語句時,一定要為所有的數據庫名、數據表名、數據表字段名全部添加一對反引號,像Discuz!這樣的寫法是很不妥的。" j" f |0 n, d, L# W- @
以上參考: 升級到 MySQL 8.0+ 後Discuz! 更新緩存時出現SQL語法錯誤 * X7 b& K8 A' {2 q1 [ : ?+ j$ J7 y1 l7 G2 Q0 X2 b - t4 G3 Y+ a& x+ v+ F6 k ! h7 S% L, z! `) F* z) @8 k. `/ K+ R5 x. q V4 k