老師好,在使用您的模組tad themes時也有將專用佈景裝上,但要進入後台管理會顯示一片空白,將專用佈景移除換成別的佈景,就能進入tad themes的後台管理畫面,請問這是什麼原因呢?
開除錯訊息是:
通知: Constant TADTOOLS_PATH already defined 在檔案中的第 /modules/tadtools/tadtools_header.php 列 9
|
通知: Constant TADTOOLS_URL already defined 在檔案中的第 /modules/tadtools/tadtools_header.php 列 10
|
通知: Undefined index: fop 在檔案中的第 /modules/tad_themes/admin/up_file.php 列 507 |
0.000290 - SET NAMES 'utf8' |
0.000186 - SET SQL_BIG_SELECTS = 1 |
0.000917 - SELECT * FROM config WHERE (conf_modid = '0' AND conf_catid = '1') ORDER BY conf_order ASC |
0.000397 - SELECT sess_data, sess_ip FROM session WHERE sess_id = 'tkf5rsbtri1pkpghssnd8kpdf6' |
0.000366 - SELECT * FROM users WHERE uid = '1' |
0.000469 - SELECT * FROM modules WHERE dirname = 'tad_themes' |
0.000445 - select * from tad_themes where theme_name='school2012' |
網站使用環境條件:
XOOPS 版本 | XOOPS 2.5.5 |
PHP 版本 |
5.2.17 |
MySQL 版本 |
5.0.51a-community-nt
|
tadtools工具版本:1.13
老師好,我已經將網址及帳密用即時留言版私密給您了,煩請老師幫忙了,不好意思
呃...算是資料庫的關係...底下是網路找到的資料
簡單講,您的MySQL用的是嚴格模式
解決方法一:
打開my.ini,查找
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
修改為
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
然後重啟MYSQL
解決方法二:
MySQL 5 uses a strict mode which needs to be disabled.
In Windows, Goto
Start-->Programs-->MySQL->MySQL
Instance Config Wizard. Follow through the Reconfigure Instance
option-->Detailed
Configuration-->Continue Next a few screens. At the
bottom under Enable TCP/IP option there is 'Enable Strict Mode'.
Deslect this option (no tick). Save changes and MySQL will
restart
原來在MySQL
5.0.2之前,MySQL對非法或不當值並不嚴厲,而且為了數據輸入還會強制將它們變為合法值。在MySQL
5.0.2和更高版本中,保留了以前的默認行為,但你可以為不良值選擇更傳統的處理方法,從而使得服務器能夠拒絕並放棄出現不良值的語句。本節介紹了MySQL的默認行為(寬大行為),新的嚴格的SQL模式,以及它們的區別。
如果你未使用嚴格模式,下述情況是真實的。如果將「不正確」的值插入到列,如將NULL值插入非NULL列,或將過大的數值插入數值列,MySQL會將這些列設置為「最可能的值」,而不是生成錯誤信息。
· 如果試圖將超範圍的值保存到數值列,MySQL服務器將保存0(最小的可能值)取而代之,或最大的可能值。
· 對於字符串,MySQL或保存空字符串,或將字符串儘可能多的部分保存到列中。
· 如果打算將不是以數值開頭的字符串保存到數值列,MySQL將保存0。
·
MySQL允許將特定的不正確日期值保存到DATE和DATETIME列(如「2000-02-31」或「2000-02-00」)。其觀點在於,驗證日
期不是SQL服務器的任務。如果MySQL能保存日期值並準確檢索相同的值,MySQL就能按給定的值保存它。如果日期完全不正確(超出服務器能保存的範
圍)將在列中保存特殊的日期值「0000-00-00」取而代之。
·
如果試圖將NULL值保存到不接受NULL值的列,對於單行INSERT語句,將出現錯誤。對於多行INSERT語句或INSERT INTO
...
SELECT語句,MySQL服務器會保存針對列數據類型的隱含默認值。一般情況下,對於數值類型,它是0,對於字符串類型,它是空字符串(''),對於日期和時間類型是「zero」。
·
如果INSERT語句未為列指定值,如果列定義包含明確的DEFAULT子句,MySQL將插入默認值。如果在定義中沒有這類DEFAULT子句,MySQL會插入列數據類型的隱含默認值。
採用前述規則的原因在於,在語句開始執行前,無法檢查這些狀況。如果在更新了數行後遇到這類問題,我們不能僅靠回滾解決,這是因為存儲引擎可能不支持
回滾。中止語句並不是良好的選擇,在該情況下,更新完成了「一半」,這或許是最差的情況。對於本例,較好的方法是「僅可能做到最好」,然後就像什麼都未發
生那樣繼續。
在MySQL 5.0.2和更高版本中,可以使用STRICT_TRANS_TABLES或STRICT_ALL_TABLES
SQL模式,選擇更嚴格的處理方式。
STRICT_TRANS_TABLES的工作方式:
· 對於事務性存儲引擎,在語句中任何地方出現的不良數據值均會導致放棄語句並執行回滾。
·
對於非事務性存儲引擎,如果錯誤出現在要插入或更新的第1行,將放棄語句。(在這種情況下,可以認為語句未改變表,就像事務表一樣)。首行後出現的錯誤不
會導致放棄語句。取而代之的是,將調整不良數據值,並給出告警,而不是錯誤。換句話講,使用STRICT_TRANS_TABLES後,錯誤值會導致
MySQL執行回滾操作,如果可以,所有更新到此為止。
要想執行更嚴格的檢查,請啟用STRICT_ALL_TABLES。除了非事務性存儲引擎,它與STRICT_TRANS_TABLES等同,即使當
不良數據出現在首行後的其他行,所產生的錯誤也會導致放棄語句。這意味著,如果錯誤出現在非事務性表多行插入或更新過程的中途,僅更新部分結果。前面的行
將完成插入或更新,但錯誤出現點後面的行則不然。對於非事務性表,為了避免這種情況的發生,可使用單行語句,或者在能接受轉換警告而不是錯誤的情況下使用
STRICT_TRANS_TABLES。要想在第1場合防止問題的出現,不要使用MySQL來檢查列的內容。最安全的方式(通常也較快)是,讓應用程序
負責,僅將有效值傳遞給數據庫。
有了嚴格的模式選項後,可使用INSERT IGNORE或UPDATE
IGNORE而不是不帶IGNORE的INSERT或UPDATE,將錯誤當作告警對待。
老師,照您第一個提供的解決方式,已經順利解決討論區模組無法新增討論區的問題了,謝謝
但是佈景模組還是要在進入後台的管理畫面時,呈現一片空白,這是否意味著我必須要把資料庫給移除重新安裝選擇較低階的版本才行呢?