General Actions:
Log-in
Register
Wiki:
Main wiki
▼
:
Document Index
»
Space:
Admin
▼
:
Document Index
»
Page:
CheckDBEncoding
Search
en
Page Actions:
Export
▼
:
Export as PDF
Export as RTF
Export as HTML
More actions
▼
:
Print preview
View Source
WebHome
»
XWiki and MySQL Configuration Check
»
MySQL Encoding Check
Wiki source code of
MySQL Encoding Check
Last modified by
Administrator
on 2010/09/24 19:35
Content
·
Comments
(0)
·
Annotations
(0)
·
Attachments
(0)
·
History
·
Information
Show line numbers
<% println context.getDatabase() println context.getOriginalDatabase() def context2 = context.getContext(); def store = xwiki.getXWiki().getStore().getStore(); def wikilist = xwiki.isVirtual() ? xwiki.wikimanager.getAllWikis() : [ context.getOriginalDatabase() ]; def indexes = xwiki.getDocument("Admin.CheckIndexesSQL").getContent().split("\n") println "1.1 General db settings" try { store.beginTransaction(context2); def session = store.getSession(context2); def connection = session.connection(); def stmt = connection.createStatement(); stmt.execute("show variables like 'character_set_%'"); def rset = stmt.getResultSet(); def result = null; while (rset.next()) { def varname = rset.getString(1); def varvalue = rset.getString(2); if (varname!="character_sets_dir") { println "* MYSQL encoding setting ${varname}: ${varvalue}" } } stmt.close(); } catch (Exception e) { println "* <font color='red'>Failed to check mysql encoding</font>: " + e.getMessage() } finally { store.endTransaction(context2, false); } println "1.1 General db collation settings" try { store.beginTransaction(context2); def session = store.getSession(context2); def connection = session.connection(); def stmt = connection.createStatement(); stmt.execute("show variables like 'collation%'"); def rset = stmt.getResultSet(); def result = null; while (rset.next()) { def varname = rset.getString(1); def varvalue = rset.getString(2); println "* MYSQL collation setting ${varname}: ${varvalue}" } stmt.close(); } catch (Exception e) { println "* <font color='red'>Failed to check mysql encoding</font>: " + e.getMessage() } finally { store.endTransaction(context2, false); } println "1.1 Encoding settings by wiki" if (!wikilist.contains("xwiki")) wikilist.add(0, "xwiki") for(wiki in wikilist) { // check database encoding try { store.beginTransaction(context2); def session = store.getSession(context2); def connection = session.connection(); def stmt = connection.createStatement(); stmt.execute("show create database ${wiki}"); def rset = stmt.getResultSet(); def result = null; try { rset.first(); result = rset.getString(2); } catch (Exception e2) {} // println result def i1 = result.indexOf("DEFAULT CHARACTER SET") def i2 = result.indexOf("*", i1) if (result!=null && i1!=-1) { def enc = result.substring(i1 + 22, i2); println "* database encoding of ${wiki} is ${enc}" } else { println "* <font color='red'>Could not find xwikidoc encoding for wiki ${wiki}</font>" } stmt.close(); } catch (Exception e) { println "* <font color='red'>Failed to check xwikidoc encoding for wiki ${wiki}</font>: " + e.getMessage() } finally { store.endTransaction(context2, false); } // check xwikidoc table encoding try { store.beginTransaction(context2); def session = store.getSession(context2); def connection = session.connection(); def stmt = connection.createStatement(); stmt.execute("show create table ${wiki}.xwikidoc"); def rset = stmt.getResultSet(); def result = null; try { rset.first(); result = rset.getString(2); } catch (Exception e2) {} // println result def i1 = -1; def i2 = -1; i1 = result.indexOf("DEFAULT CHARSET="); if (i1!=-1) i2 = result.indexOf(" ", i1 + 16); if (result!=null && i1!=-1) { def enc = (i2==-1) ? result.substring(i1 + 16) : result.substring(i1 + 8, i2); println "* encoding of xwikidoc of ${wiki} is ${enc}" } else { println "* <font color='red'>Could not find xwikidoc encoding for wiki ${wiki}</font>" } i1 = result.indexOf("COLLATE=") if (i1!=-1) i2 = result.indexOf(" ", i1+8) if (result!=null && i1!=-1) { def enc = (i2==-1) ? result.substring(i1 + 8) : result.substring(i1 + 8, i2); println "* collation of xwikidoc of ${wiki} is ${enc}" } else { println "* <font color='red'>Could not find xwikidoc collation for wiki ${wiki}</font>" } stmt.close(); } catch (Exception e) { println "* <font color='red'>Failed to check xwikidoc encoding or collation for wiki ${wiki}</font>: " + e.getMessage() } finally { store.endTransaction(context2, false); } } %>