1 Q; {; F' J: q2 f- R 1 N- `$ p$ v2 ]* t9 U- z- Q6 w S7 ]/ T當php 7.2.24 connect to mysql server,出現 :
PHP Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /test/connectmysql8.php:99 g5 M: M" U9 X! w6 ]" Q+ d
Stack trace:4 p/ c" `' c) {3 ?+ k
#0 {main} $ y0 }0 r. u. J8 q+ O
thrown in /test/connectmysql8.php on line 9- e, x2 G& ?3 w4 Y: D0 ]" D
2 T# D$ O6 E# V) v; e
Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /test/connectmysql8.php:9 ; F' H8 U9 c+ X( n) _# Y
Stack trace:2 `- m' ]4 K: {/ Y( {! r- s
#0 {main}& y. ]6 ?$ R. b0 [: w% ^. E, u5 O
thrown in /test/connectmysql8.php on line 9
複製代碼
這是版本相依的問題,只要 yum install php-mysqlnd 或 yum install php-mysqli 即可, B, Z7 X0 F5 K2 {! I& L% r4 O4 a
7 G+ E: n# q8 m6 A, l" P* r
$ k( U1 m# a, |7 e[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. 9 Z. R4 t1 Q3 t# S說明: 千萬不能照它建議用"UTF8MB4",否則無法成功啟動1 v0 |( H( w" t* {0 f
# a7 }/ t3 a2 [+ p1 F9 {(2) 3 x( C4 i! v$ ^& x$ P, c$ ?' o(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 , _0 A2 w1 o' v0 C+ hSELECT COUNT(*) FROM common_usergroup WHERE type='special' and system>0 4 s" Q" v* o* W N( }! B0 {$ c4 }8 ~1 e+ J! w, I0 S
(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 , Z6 F2 L9 v/ ISELECT * 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 # `" H0 J3 ]( k* R- P/ v / }- X- q9 m7 n) h因為MySQL 8.0+將system和groups作為了關鍵字,所以不能直接在SQL中將system和groups這兩個詞作為數據庫、數據表、數據表字段中的任意一種使用,如果數據庫名或數據表名或數據表字段名使用了system或groups作為名字,必須使用一對反引號引用起來。寫作`system`或`groups`。 ' q# K d9 l4 E% P9 T- ?: |$ t7 M. F$ J8 \! B, F
第一個錯誤需要找到Discuz!目錄中的source\class\table\table_common_usergroup.php,8 q$ a4 A( h$ l6 e( @* ]9 Z' D
將文件中所有的system全部改成`system`,保存後重新上傳到服務器的相同目錄即可。& }" K0 s/ H6 X1 ]& b' Y
* `; w% p- H3 t7 K
第二個錯誤需要找到Discuz!目錄下中的source\class\table\table_forum_announcement.php, ! M5 q( P9 J9 f( c: @! C6 X) t/ Z& \將文件中所有的groups全部改為`groups`,保存後重新上傳到服務器的相同目錄即可。 6 s; `2 ]) L; i* g9 }2 K W0 T6 w" z6 S. ]% Z4 W) z
如果在MySQL 8+環境下安裝Discuz!,在安裝前需要給install\data\install.sql文件中沒有加引號的所有system逐一添加一對反引號保存重新上傳到服務器的相同目錄,否則也會出現SQL語法錯誤。$ |' Y0 S/ ?5 M i