mysql log_bin_trust_function_creators

在数据库存添加function时,出现以下错误:
#1418 – This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
在要执行的SQL前加入:SET GLOBAL log_bin_trust_function_creators = 1;即可顺利导入function

httpd.exe: Could not reliably determine the server’s fully qualified domain name

查看系统日志,看到这个错误:
httpd.exe: Could not reliably determine the server’s fully qualified domain name, using 192.168.1.xx for ServerName
虽然apache能正常运行,但是觉得不爽,查了一下原来是因为DNS没配置好.在httpd.conf , 在最前加入 ServerName localhost:80 即可。

jQuery的md5加密插件

下载:http://blog.greycode.cn/labs/jqmd5/jquery.md5.js

演示:http://blog.greycode.cn/labs/jqmd5/jquery.md5.html

/**
* jQuery MD5 hash algorithm function
*
* <code>
* Calculate the md5 hash of a String
* String $.md5 ( String str )
* </code>
*
* Calculates the MD5 hash of str using the » RSA Data Security, Inc. MD5 Message-Digest Algorithm, and returns that hash.
* MD5 (Message-Digest algorithm 5) is a widely-used cryptographic hash function with a 128-bit hash value. MD5 has been employed in a wide variety of security applications, and is also commonly used to check the integrity of data. The generated hash is also non-reversable. Data cannot be retrieved from the message digest, the digest uniquely identifies the data.
* MD5 was developed by Professor Ronald L. Rivest in 1994. Its 128 bit (16 byte) message digest makes it a faster implementation than SHA-1.
* This script is used to process a variable length message into a fixed-length output of 128 bits using the MD5 algorithm. It is fully compatible with UTF-8 encoding. It is very useful when u want to transfer encrypted passwords over the internet. If you plan using UTF-8 encoding in your project don’t forget to set the page encoding to UTF-8 (Content-Type meta tag).
* This function orginally get from the WebToolkit and rewrite for using as the jQuery plugin.
*
* Example
* Code
* <code>
* $.md5(“I’m Persian.”);
* </code>
* Result
* <code>
* “b8c901d0f02223f9761016cfff9d68df”
* </code>
*
* @alias Muhammad Hussein Fattahizadeh < muhammad [AT] semnanweb [DOT] com >
* @link http://www.semnanweb.com/jquery-plugin/md5.html
* @see http://www.webtoolkit.info/
* @license http://www.gnu.org/licenses/gpl.html [GNU General Public License]
* @param {jQuery} {md5:function(string))
* @return string
*/

(function($){

var rotateLeft = function(lValue, iShiftBits) {
return (lValue << iShiftBits) | (lValue >>> (32 – iShiftBits));
}

var addUnsigned = function(lX, lY) {
var lX4, lY4, lX8, lY8, lResult;
lX8 = (lX & 0x80000000);
lY8 = (lY & 0x80000000);
lX4 = (lX & 0x40000000);
lY4 = (lY & 0x40000000);
lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
if (lX4 | lY4) {
if (lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
} else {
return (lResult ^ lX8 ^ lY8);
}
}

var F = function(x, y, z) {
return (x & y) | ((~ x) & z);
}

var G = function(x, y, z) {
return (x & z) | (y & (~ z));
}

var H = function(x, y, z) {
return (x ^ y ^ z);
}

var I = function(x, y, z) {
return (y ^ (x | (~ z)));
}

var FF = function(a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
};

var GG = function(a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
};

var HH = function(a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
};

var II = function(a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
};

var convertToWordArray = function(string) {
var lWordCount;
var lMessageLength = string.length;
var lNumberOfWordsTempOne = lMessageLength + 8;
var lNumberOfWordsTempTwo = (lNumberOfWordsTempOne – (lNumberOfWordsTempOne % 64)) / 64;
var lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16;
var lWordArray = Array(lNumberOfWords – 1);
var lBytePosition = 0;
var lByteCount = 0;
while (lByteCount < lMessageLength) {
lWordCount = (lByteCount – (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
lByteCount++;
}
lWordCount = (lByteCount – (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
lWordArray[lNumberOfWords – 2] = lMessageLength << 3;
lWordArray[lNumberOfWords – 1] = lMessageLength >>> 29;
return lWordArray;
};

var wordToHex = function(lValue) {
var WordToHexValue = “”, WordToHexValueTemp = “”, lByte, lCount;
for (lCount = 0; lCount <= 3; lCount++) {
lByte = (lValue >>> (lCount * 8)) & 255;
WordToHexValueTemp = “0” + lByte.toString(16);
WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length – 2, 2);
}
return WordToHexValue;
};

var uTF8Encode = function(string) {
string = string.replace(/\x0d\x0a/g, “\x0a”);
var output = “”;
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
output += String.fromCharCode(c);
} else if ((c > 127) && (c < 2048)) {
output += String.fromCharCode((c >> 6) | 192);
output += String.fromCharCode((c & 63) | 128);
} else {
output += String.fromCharCode((c >> 12) | 224);
output += String.fromCharCode(((c >> 6) & 63) | 128);
output += String.fromCharCode((c & 63) | 128);
}
}
return output;
};

$.extend({
md5: function(string) {
var x = Array();
var k, AA, BB, CC, DD, a, b, c, d;
var S11=7, S12=12, S13=17, S14=22;
var S21=5, S22=9 , S23=14, S24=20;
var S31=4, S32=11, S33=16, S34=23;
var S41=6, S42=10, S43=15, S44=21;
string = uTF8Encode(string);
x = convertToWordArray(string);
a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
for (k = 0; k < x.length; k += 16) {
AA = a; BB = b; CC = c; DD = d;
a = FF(a, b, c, d, x[k+0], S11, 0xD76AA478);
d = FF(d, a, b, c, x[k+1], S12, 0xE8C7B756);
c = FF(c, d, a, b, x[k+2], S13, 0x242070DB);
b = FF(b, c, d, a, x[k+3], S14, 0xC1BDCEEE);
a = FF(a, b, c, d, x[k+4], S11, 0xF57C0FAF);
d = FF(d, a, b, c, x[k+5], S12, 0x4787C62A);
c = FF(c, d, a, b, x[k+6], S13, 0xA8304613);
b = FF(b, c, d, a, x[k+7], S14, 0xFD469501);
a = FF(a, b, c, d, x[k+8], S11, 0x698098D8);
d = FF(d, a, b, c, x[k+9], S12, 0x8B44F7AF);
c = FF(c, d, a, b, x[k+10], S13, 0xFFFF5BB1);
b = FF(b, c, d, a, x[k+11], S14, 0x895CD7BE);
a = FF(a, b, c, d, x[k+12], S11, 0x6B901122);
d = FF(d, a, b, c, x[k+13], S12, 0xFD987193);
c = FF(c, d, a, b, x[k+14], S13, 0xA679438E);
b = FF(b, c, d, a, x[k+15], S14, 0x49B40821);
a = GG(a, b, c, d, x[k+1], S21, 0xF61E2562);
d = GG(d, a, b, c, x[k+6], S22, 0xC040B340);
c = GG(c, d, a, b, x[k+11], S23, 0x265E5A51);
b = GG(b, c, d, a, x[k+0], S24, 0xE9B6C7AA);
a = GG(a, b, c, d, x[k+5], S21, 0xD62F105D);
d = GG(d, a, b, c, x[k+10], S22, 0x2441453);
c = GG(c, d, a, b, x[k+15], S23, 0xD8A1E681);
b = GG(b, c, d, a, x[k+4], S24, 0xE7D3FBC8);
a = GG(a, b, c, d, x[k+9], S21, 0x21E1CDE6);
d = GG(d, a, b, c, x[k+14], S22, 0xC33707D6);
c = GG(c, d, a, b, x[k+3], S23, 0xF4D50D87);
b = GG(b, c, d, a, x[k+8], S24, 0x455A14ED);
a = GG(a, b, c, d, x[k+13], S21, 0xA9E3E905);
d = GG(d, a, b, c, x[k+2], S22, 0xFCEFA3F8);
c = GG(c, d, a, b, x[k+7], S23, 0x676F02D9);
b = GG(b, c, d, a, x[k+12], S24, 0x8D2A4C8A);
a = HH(a, b, c, d, x[k+5], S31, 0xFFFA3942);
d = HH(d, a, b, c, x[k+8], S32, 0x8771F681);
c = HH(c, d, a, b, x[k+11], S33, 0x6D9D6122);
b = HH(b, c, d, a, x[k+14], S34, 0xFDE5380C);
a = HH(a, b, c, d, x[k+1], S31, 0xA4BEEA44);
d = HH(d, a, b, c, x[k+4], S32, 0x4BDECFA9);
c = HH(c, d, a, b, x[k+7], S33, 0xF6BB4B60);
b = HH(b, c, d, a, x[k+10], S34, 0xBEBFBC70);
a = HH(a, b, c, d, x[k+13], S31, 0x289B7EC6);
d = HH(d, a, b, c, x[k+0], S32, 0xEAA127FA);
c = HH(c, d, a, b, x[k+3], S33, 0xD4EF3085);
b = HH(b, c, d, a, x[k+6], S34, 0x4881D05);
a = HH(a, b, c, d, x[k+9], S31, 0xD9D4D039);
d = HH(d, a, b, c, x[k+12], S32, 0xE6DB99E5);
c = HH(c, d, a, b, x[k+15], S33, 0x1FA27CF8);
b = HH(b, c, d, a, x[k+2], S34, 0xC4AC5665);
a = II(a, b, c, d, x[k+0], S41, 0xF4292244);
d = II(d, a, b, c, x[k+7], S42, 0x432AFF97);
c = II(c, d, a, b, x[k+14], S43, 0xAB9423A7);
b = II(b, c, d, a, x[k+5], S44, 0xFC93A039);
a = II(a, b, c, d, x[k+12], S41, 0x655B59C3);
d = II(d, a, b, c, x[k+3], S42, 0x8F0CCC92);
c = II(c, d, a, b, x[k+10], S43, 0xFFEFF47D);
b = II(b, c, d, a, x[k+1], S44, 0x85845DD1);
a = II(a, b, c, d, x[k+8], S41, 0x6FA87E4F);
d = II(d, a, b, c, x[k+15], S42, 0xFE2CE6E0);
c = II(c, d, a, b, x[k+6], S43, 0xA3014314);
b = II(b, c, d, a, x[k+13], S44, 0x4E0811A1);
a = II(a, b, c, d, x[k+4], S41, 0xF7537E82);
d = II(d, a, b, c, x[k+11], S42, 0xBD3AF235);
c = II(c, d, a, b, x[k+2], S43, 0x2AD7D2BB);
b = II(b, c, d, a, x[k+9], S44, 0xEB86D391);
a = addUnsigned(a, AA);
b = addUnsigned(b, BB);
c = addUnsigned(c, CC);
d = addUnsigned(d, DD);
}
var tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);
return tempValue.toLowerCase();
}
});
})(jQuery);

eclipse某些快捷键无效

在使用eclipse的svn时,每次提交代码到版本库都觉得很麻烦,每次都要找到Team->Commit(ctrl+alt+c),看到有快捷键,但是按快捷键时却又没有反应,还以为和别的软件冲突了,原来是eclipse没启用某些快捷键,设置一下就行了,Window->Custemize Perspective->Command Groups Availability,找到SVN,打上勾就可以用了!

php $_ENV为空

在移植代码的时候,发现程序某个功能出错了,
查找原因原来是$_ENV为空的,
原来是php.ino的配置所致,
把php.ini的variables_order=”GPCS”,
改为:variables_order=”EGPCS”。

variables_order为GPCS也就是说系统在定义PHP预定义变量时的顺序是GET,POST,COOKIES,SERVER,没有定义Environment(E),
你可以修改php.ini文件的variables_order值为你想要的顺序,如:”EGPCS”。这时,$_ENV的值就可以取得了 ,
EGPCS值(EGPCS是Environment、Get、Post、Cookies、Server的缩写 — 这是PHP中外部变量来源的全部范围)

windows下php以fastcgi运行支持ThinkPHP的URL重写

因为在Fastcgi模式下,php不支持rewrite的目标网址的PATH_INFO的解析
ThinkPHP运行在URL_MODEL=2时,会出现 No input file specified.的情况,
这时可以修改网站目录的.htaccess文件:
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
改为
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]

.htaccess的内容为:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]

win7 64位打开Eclipse失败

打开Eclipse时,出现以下错误 

—————————

Eclipse
—————————
Failed to load the JNI shared library "D:\Java\jdk1.6.0_24\bin\..\jre\bin\client\jvm.dll".
 
—————————
确定   
—————————
因为Eclipse是64位的,所以下载64位jdk就可以正常运行了!

mysqli封装类,可防SQL注入

 转自:http://www.aplweb.co.uk/blog/php/mysqli-wrapper-class/

下载:http://www.aplweb.co.uk/download/php/mysqli-wrapper-class/

PHP代码
  1. /** 
  2.    * Make an array of references to the values of another array 
  3.    * Note: useful when references rather than values are required 
  4.    * @param {array} array of values  
  5.    * @return {array} references array 
  6.    */  
  7.    function makeRefArr(&$arr) {  
  8.        $refs = array();  
  9.   
  10.        foreach($arr as $key => &$val) {  
  11.            $refs[$key] = &$val;  
  12.        }  
  13.   
  14.        return $refs;  
  15.    }  
  16.   
  17.    /** 
  18.    * Make a recursive copy of an array 
  19.    * @param {array} original array 
  20.    * @param {boolean} should the values to be cloned too? 
  21.    * @return {array} copy of source array 
  22.    */  
  23.    function array_copy($arr$deep= true) {  
  24.        $newArr = array();  
  25.   
  26.        if ($deep) {  
  27.            foreach ($arr as $key=>$val) {  
  28.                if (is_object($val)) {  
  29.                    $newArr[$key] = clone($val);  
  30.                } else if (is_array($val)) {  
  31.                    $newArr[$key] = array_copy($val);  
  32.                } else {  
  33.                    $newArr[$key] = $val;  
  34.                }  
  35.            }  
  36.        } else {  
  37.            foreach ($arr as $key=>$val) {  
  38.                $newArr[$key] = $val;  
  39.            }  
  40.        }  
  41.   
  42.        return $newArr;  
  43.    }  
  44.   
  45.    /** 
  46.    * A mysqli wrapper class 
  47.    * 
  48.    * @author Andrew Lowndes (APL Web) 
  49.    * @date 20/11/2010 
  50.    */  
  51.    class db {  
  52.        public static $db = null;  
  53.   
  54.        //connect to the database  
  55.        public static function connect() {  
  56.            self::$db = new mysqli(‘localhost’‘username’ ,‘password’‘database’);  
  57.   
  58.            if (mysqli_connect_errno()) {  
  59.                throw new Exception(‘Connection failed: ‘ . mysqli_connect_error());  
  60.            }  
  61.   
  62.            self::$db->set_charset("utf8");  
  63.        }  
  64.   
  65.        //close the connection  
  66.        public static function close() {  
  67.            if (self::$db) {  
  68.                self::$db->close();  
  69.            }  
  70.        }  
  71.   
  72.        /** 
  73.        * Run a query and return the result 
  74.        * @param {string} query to run (with ‘?’ for values) 
  75.        * @param {array} values to execute in prepared statement (optional) 
  76.        * @return {resource} result 
  77.        */  
  78.        public static function query($query$objs = array()) {  
  79.            if (!self::$db) self::connect();  
  80.   
  81.            $objs = (array)$objs//automagically cast single values into an array  
  82.   
  83.            $statement = self::$db->prepare($query);  
  84.   
  85.            if (!$statement) {  
  86.                throw new Exception(‘Query failed: ‘ . self::$db->error);  
  87.            }  
  88.   
  89.            //go through all of the provided objects and bind them  
  90.            $types = array();  
  91.            $values = array();  
  92.   
  93.            if (count($objs)>0) {  
  94.                foreach ($objs as $obj) {  
  95.                    //get the object type and translate it ready for bind parameter  
  96.                    $type = gettype($obj);  
  97.   
  98.                    switch ($type) {  
  99.                        case ‘boolean’case ‘integer’:  
  100.                            $types[] = ‘i’;  
  101.                            $values[] = intval($obj);  
  102.                            break;  
  103.                        case ‘double’:  
  104.                            $types[] = ‘d’;  
  105.                            $values[] = doubleval($obj);  
  106.                            break;  
  107.                        case ‘string’:  
  108.                            $types[] = ‘s’;  
  109.                            $values[] = (string)$obj;  
  110.                            break;  
  111.                        case ‘array’case ‘object’:  
  112.                            $paramTypes[] = ‘s’;  
  113.                            $values[] = json_encode($obj);  
  114.                            break;  
  115.                        case ‘resource’case ‘null’case ‘unknown type’default:  
  116.                            throw new Exception(‘Unsupported object passed through as query prepared object!’);  
  117.                    }  
  118.                }  
  119.   
  120.                $params = makeRefArr($values);  
  121.                array_unshift($params, implode($types));  
  122.                call_user_func_array(array($statement‘bind_param’), $params);  
  123.            }  
  124.   
  125.            if (!$statement->execute()) {  
  126.                return null;  
  127.            } else {  
  128.                $statement->store_result();  
  129.                return $statement;  
  130.            }  
  131.        }  
  132.   
  133.        /** 
  134.        * Determine if an object exists 
  135.        * @param {string} query to run 
  136.        * @param {array} objects to use in prepare query (optional) 
  137.        * @return {boolean} object exists in database 
  138.        */  
  139.        public static function objectExists($query$objs = array()) {  
  140.            $statement = self::query($query$objs);  
  141.   
  142.            return (is_object($statement) && $statement->num_rows>0);  
  143.        }  
  144.   
  145.        /** 
  146.        * Make an associative array of field names from a statement 
  147.        * @param {resource} mysqli statement 
  148.        * @return {array} field names array 
  149.        */  
  150.        private static function getFieldNames($statement) {  
  151.            $result = $statement->result_metadata();  
  152.            $fields = $result->fetch_fields();  
  153.   
  154.            $fieldNames = array();  
  155.            foreach($fields as $field) {  
  156.                $fieldNames[$field->name] = null;  
  157.            }  
  158.   
  159.            return $fieldNames;  
  160.        }  
  161.   
  162.        /** 
  163.        * Get an object from a query 
  164.        * @param {string} query to execute 
  165.        * @param {array} objects to use as the values (optional)  
  166.        * @return {assoc} sinulatobject 
  167.        */  
  168.        public static function getObject($query$objs = array()) {  
  169.            $statement = self::query($query$objs);  
  170.   
  171.            if (!is_object($statement) || $statement->num_rows<1) {  
  172.                return null;  
  173.            }  
  174.   
  175.            $fieldNames = self::getFieldNames($statement);  
  176.            call_user_func_array(array($statement‘bind_result’), makeRefArr($fieldNames));  
  177.   
  178.            $statement->fetch();  
  179.            $statement->close();  
  180.   
  181.            return $fieldNames;  
  182.        }  
  183.   
  184.        /** 
  185.        * Get a list of objects from the database 
  186.        * @param {string} query 
  187.        * @return {array} objects 
  188.        */  
  189.        public static function getObjects($query$objs = array()) {  
  190.            $statement = self::query($query$objs);  
  191.   
  192.            if (!is_object($statement) || $statement->num_rows<1) {  
  193.                return array();  
  194.            }  
  195.   
  196.            $fieldNames = self::getFieldNames($statement);  
  197.            call_user_func_array(array($statement‘bind_result’), makeRefArr($fieldNames));  
  198.   
  199.            $results = array();  
  200.            while ($statement->fetch()) {  
  201.                $results[] = array_copy($fieldNames);  
  202.            }  
  203.   
  204.            $statement->close();  
  205.   
  206.            return $results;  
  207.        }  
  208.   
  209.        /** 
  210.        * Get all of the data from a table 
  211.        * @param {string} table name 
  212.        * @return {array} table data 
  213.        */  
  214.        public static function getTable($tableName) {  
  215.            if (!self::$db) self::connect();  
  216.   
  217.            $tableName = self::$db->escape_string($tableName);  
  218.   
  219.            return self::getObjects(‘SELECT * FROM `’ . $tableName . ‘`;’);  
  220.        }  
  221.   
  222.        /** 
  223.        * Get a field from a table based on a field having a specific value 
  224.        * @param {string} table name 
  225.        * @param {string} field name 
  226.        * @param {mixed} field value 
  227.        * @return {array} table row data 
  228.        */  
  229.        public static function getTableRow($tableName$field$value) {  
  230.            if (!self::$db) self::connect();  
  231.   
  232.            $tableName = self::$db->escape_string($tableName);  
  233.            $field = self::$db->escape_string($field);  
  234.   
  235.            return self::getObject(‘SELECT * FROM `’ . $tableName . ‘` WHERE `’ . $field . ‘` = ? LIMIT 1;’$value);  
  236.        }  
  237.   
  238.        /** 
  239.        * Get all related rows from a table based on a field having a specific value 
  240.        * @param {string} table name 
  241.        * @param {string} field name 
  242.        * @param {mixed} field value 
  243.        * @return {array} table row data 
  244.        */  
  245.        public static function getTableRows($tableName$field$value$sortField = null, $sortDesc = false) {  
  246.            if (!self::$db) self::connect();  
  247.   
  248.            $tableName = self::$db->escape_string($tableName);  
  249.            $field = self::$db->escape_string($field);  
  250.   
  251.            if ($sortField == null) {  
  252.                $sortField = $field;  
  253.            } else {  
  254.                $sortField = self::$db->escape_string($sortField);  
  255.            }  
  256.   
  257.            return self::getObjects(‘SELECT * FROM `’ . $tableName . ‘` WHERE `’ . $field . ‘` = ? ORDER BY `’ . $sortField . ‘` ‘ . ($sortDesc ? ‘DESC’ : ‘ASC’) . ‘;’$value);  
  258.        }  
  259.    }  

如何让phpmyadmin同时管理多个服务器的数据库

找到config.inc.php文件,加入(如果存在则修改)如下代码:
PHP代码
  1. $cfg[‘AllowArbitraryServer’] = true;  
 
即可。
 
如果端口不是默认的3306,输入服务器时后面加上端口号;
如:192.168.1.100:33060。
 
修改退出超时时间为一天:
PHP代码
  1. $cfg[‘LoginCookieValidity’] = 86400;  

ERROR 1010 (HY000): Error dropping database (can’t rmdir ‘./test’, errno: 41)

  我自己建立了一个数据库test,但是使用命令:drop database test;删除本数据库时却删除失败,系统提示出现了错误,错误代码为:

 

      ERROR 1010 (HY000): Error dropping database(can’t rmdir ‘./test/’,errno:41)

 

      我在网上搜到了别人的解决方法,有人说要首先找到mysql的test路径,在该路径下通常会有些文件是用户操作遗留的,删除此文件后,再执行删除数据库操作就可以成功删除数据库了。

 

      于是进入我的数据库目录C:\AppServ\MySQL\data,发现里面有个文件pre_common_report.MYI,但是在test数据库里没有发现表pre_common_report,直接删除该文件,再运行drop database test;Query OK, 0 rows affected (0.00 sec)

      删除成功!

 

      总结:应该是在test目录下生成了操作数据库时留下的几个非数据库文件,导致无法删除,将这些文件删除后即可正常删除数据库了。