61阅读

mysql数据库导入导出-MySQL数据库常见的出错代码及出错信息

发布时间:2018-03-17 所属栏目:附加数据库时出错5123

一 : MySQL数据库常见的出错代码及出错信息

本文介绍的MySQL数据库的出错代码表,依据MySQL数据库头文件mysql/include/mysqld_error.h整理而成。详细内容请大家参考下文:

1005:创建表失败

1006:创建数据库失败

1007:数据库已存在,创建数据库失败

1008:数据库不存在,删除数据库失败

1009:不能删除数据库文件导致删除数据库失败

1010:不能删除数据目录导致删除数据库失败

1011:删除数据库文件失败

1012:不能读取系统表中的记录

1020:记录已被其他用户修改

1021:硬盘剩余空间不足,请加大硬盘可用空间

1022:关键字重复,更改记录失败

1023:关闭时发生错误

1024:读文件错误

1025:更改名字时发生错误

1026:写文件错误

1032:记录不存在

1036:数据表是只读的,不能对它进行修改

1037:系统内存不足,请重启数据库或重启服务器

1038:用于排序的内存不足,请增大排序缓冲区

1040:已到达数据库的最大连接数,请加大数据库可用连接数

1041:系统内存不足

1042:无效的主机名

1043:无效连接

1044:当前用户没有访问数据库的权限

1045:不能连接数据库,用户名或密码错误

1048:字段不能为空

1049:数据库不存在

1050:数据表已存在

1051:数据表不存在

1054:字段不存在

1065:无效的SQL语句,SQL语句为空

1081:不能建立Socket连接

1114:数据表已满,不能容纳任何记录

1116:打开的数据表太多

1129:数据库出现异常,请重启数据库

1130:连接数据库失败,没有连接数据库的权限

1133:数据库用户不存在

1141:当前用户无权访问数据库

1142:当前用户无权访问数据表

1143:当前用户无权访问数据表中的字段

1146:数据表不存在

1147:未定义用户对数据表的访问权限

1149:SQL语句语法错误

1158:网络错误,出现读错误,请检查网络连接状况

1159:网络错误,读超时,请检查网络连接状况

1160:网络错误,出现写错误,请检查网络连接状况

1161:网络错误,写超时,请检查网络连接状况

1062:字段值重复,入库失败

1169:字段值重复,更新记录失败

1177:打开数据表失败

1180:提交事务失败

1181:回滚事务失败

1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库

1205:加锁超时

1211:当前用户没有创建用户的权限

1216:外键约束检查失败,更新子表记录失败

1217:外键约束检查失败,删除或修改主表记录失败

1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器

1227:权限不足,您无权进行此操作

1235:MySQL版本过低,不具有本功能

 

 

附带一个java类,可以把mysql的出错代码翻译成对应的出错信息:

 

 

import java.util.*;


public class MyErrorContext

{

public static class MyError

{

int errno;

String szErrorDesc;

public MyError(int errno, String errorDesc)

{

this.errno = errno;

this.szErrorDesc = errorDesc;

}

public int getErrorNo()

{

return errno;

}


public String getErrorDesc()

{

return szErrorDesc;

}

}


public static final int DB_ER_CANT_CREATE_TABLE = 1005; //创建表失败

public static final int DB_ER_CANT_CREATE_DB = 1006; //创建数据库失败

public static final int DB_ER_DB_CREATE_EXISTS = 1007; //数据库已存在,创建数据库失败

public static final int DB_ER_DB_DROP_EXISTS = 1008; //数据库不存在,删除数据库失败

public static final int DB_ER_DB_DROP_DELETE = 1009; //不能删除数据库文件导致删除数据库失败

public static final int DB_ER_DB_DROP_RMDIR = 1010; //不能删除数据目录导致删除数据库失败

public static final int DB_ER_CANT_DELETE_FILE = 1011; //删除数据库文件失败

public static final int DB_ER_CANT_FIND_SYSTEM_REC = 1012; //不能读取系统表中的记录

public static final int DB_ER_CHECKREAD = 1020; //记录已被其他用户修改

public static final int DB_ER_DISK_FULL = 1021; //硬盘剩余空间不足,请加大硬盘可用空间

public static final int DB_ER_DUP_KEY = 1022; //关键字重复,更改记录失败

public static final int DB_ER_ERROR_ON_CLOSE = 1023; //关闭时发生错误

public static final int DB_ER_ERROR_ON_READ = 1024; //读文件错误

public static final int DB_ER_ERROR_ON_RENAME = 1025; //更改名字时发生错误

public static final int DB_ER_ERROR_ON_WRITE = 1026; //写文件错误

public static final int DB_ER_KEY_NOT_FOUND = 1032; //记录不存在

public static final int DB_ER_OPEN_AS_READONLY = 1036; //数据表是只读的,不能对它进行修改

public static final int DB_ER_OUTOFMEMORY = 1037; //系统内存不足,请重启数据库或重启服务器

public static final int DB_ER_OUT_OF_SORTMEMORY = 1038; //用于排序的内存不足,请增大排序缓冲区

public static final int DB_ER_CON_COUNT_ERROR = 1040; //已到达数据库的最大连接数,请加大数据库可用连接数

public static final int DB_ER_OUT_OF_RESOURCES = 1041; //系统内存不足

public static final int DB_ER_BADwww.61k.comERROR = 1042; //无效的主机名

public static final int DB_ER_HANDSHAKE_ERROR = 1043; //无效连接

public static final int DB_ER_DBACCESS_DENIED_ERROR = 1044; //当前用户没有访问数据库的权限

public static final int DB_ER_ACCESS_DENIED_ERROR = 1045; //不能连接数据库,用户名或密码错误

public static final int DB_ER_BAD_NULL_ERROR = 1048; //字段不能为空

public static final int DB_ER_BAD_DB_ERROR = 1049; //数据库不存在

public static final int DB_ER_TABLE_EXISTS_ERROR = 1050; //数据表已存在

public static final int DB_ER_BAD_TABLE_ERROR = 1051; //数据表不存在

public static final int DB_ER_BAD_FIELD_ERROR = 1054; //字段不存在

public static final int DB_ER_EMPTY_QUERY = 1065; //无效的SQL语句,SQL语句为空

public static final int DB_ER_IPSOCK_ERROR = 1081; //不能建立Socket连接

public static final int DB_ER_RECORD_FILE_FULL = 1114; //数据表已满,不能容纳任何记录

public static final int DB_ER_TOO_MANY_TABLES = 1116; //打开的数据表太多

public static final int DB_ERwww.61k.comIS_BLOCKED = 1129; //数据库出现异常,请重启数据库

public static final int DB_ERwww.61k.comNOT_PRIVILEGED = 1130; //连接数据库失败,没有连接数据库的权限

public static final int DB_ER_PASSWORD_NO_MATCH = 1133; //数据库用户不存在

public static final int DB_ER_NONEXISTING_GRANT = 1141; //当前用户无权访问数据库

public static final int DB_ER_TABLEACCESS_DENIED_ERROR = 1142; //当前用户无权访问数据表

public static final int DB_ER_COLUMNACCESS_DENIED_ERROR = 1143; //当前用户无权访问数据表中的字段

public static final int DB_ER_NO_SUCH_TABLE = 1146; //数据表不存在

public static final int DB_ER_NONEXISTING_TABLE_GRANT = 1147; //未定义用户对数据表的访问权限

public static final int DB_ER_SYNTAX_ERROR = 1149; //SQL语句语法错误

public static final int DB_ER_NET_READ_ERROR = 1158; //网络错误,出现读错误,请检查网络连接状况

public static final int DB_ER_NET_READ_INTERRUPTED = 1159; //网络错误,读超时,请检查网络连接状况

public static final int DB_ER_NET_ERROR_ON_WRITE = 1160; //网络错误,出现写错误,请检查网络连接状况

public static final int DB_ER_NET_WRITE_INTERRUPTED = 1161; //网络错误,写超时,请检查网络连接状况

public static final int DB_ER_DUP_ENTRY = 1062; //字段值重复,入库失败

public static final int DB_ER_DUP_UNIQUE = 1169; //字段值重复,更新记录失败

public static final int DB_ER_CHECK_NO_SUCH_TABLE = 1177; //打开数据表失败

public static final int DB_ER_ERROR_DURING_COMMIT = 1180; //提交事务失败

public static final int DB_ER_ERROR_DURING_ROLLBACK = 1181; //回滚事务失败

public static final int DB_ER_TOO_MANY_USER_CONNECTIONS = 1203; //当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库

public static final int DB_ER_LOCK_WAIT_TIMEOUT = 1205; //加锁超时

public static final int DB_ER_NO_PERMISSION_TO_CREATE_USER = 1211; //当前用户没有创建用户的权限

public static final int DB_ER_NO_REFERENCED_ROW = 1216; //外键约束检查失败,更新子表记录失败

public static final int DB_ER_ROW_IS_REFERENCED = 1217; //外键约束检查失败,删除或修改主表记录失败

public static final int DB_ER_USER_LIMIT_REACHED = 1226; //当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器

public static final int DB_ER_SPECIFIC_ACCESS_DENIED_ERROR = 1227; //权限不足,您无权进行此操作

public static final int DB_ER_NOT_SUPPORTED_YET = 1235; //MySQL版本过低,不具有本功能


private static final MyError[] errormap =

{

new MyError(DB_ER_CANT_CREATE_TABLE ,"创建表失败"),

new MyError(DB_ER_CANT_CREATE_DB ,"创建数据库失败"),

new MyError(DB_ER_DB_CREATE_EXISTS ,"数据库已存在,创建数据库失败"),

new MyError(DB_ER_DB_DROP_EXISTS ,"数据库不存在,删除数据库失败"),

new MyError(DB_ER_DB_DROP_DELETE ,"不能删除数据库文件导致删除数据库失败"),

new MyError(DB_ER_DB_DROP_RMDIR ,"不能删除数据目录导致删除数据库失败"),

new MyError(DB_ER_CANT_DELETE_FILE ,"删除数据库文件失败"),

new MyError(DB_ER_CANT_FIND_SYSTEM_REC ,"不能读取系统表中的记录"),

new MyError(DB_ER_CHECKREAD ,"记录已被其他用户修改"),

new MyError(DB_ER_DISK_FULL ,"硬盘剩余空间不足,请加大硬盘可用空间"),

new MyError(DB_ER_DUP_KEY ,"关键字重复,更改记录失败"),

new MyError(DB_ER_ERROR_ON_CLOSE ,"关闭时发生错误"),

new MyError(DB_ER_ERROR_ON_READ ,"读文件错误"),

new MyError(DB_ER_ERROR_ON_RENAME ,"更改名字时发生错误"),

new MyError(DB_ER_ERROR_ON_WRITE ,"写文件错误"),

new MyError(DB_ER_KEY_NOT_FOUND ,"记录不存在"),

new MyError(DB_ER_OPEN_AS_READONLY ,"数据表是只读的,不能对它进行修改"),

new MyError(DB_ER_OUTOFMEMORY ,"系统内存不足,请重启数据库或重启服务器"),

new MyError(DB_ER_OUT_OF_SORTMEMORY ,"用于排序的内存不足,请增大排序缓冲区"),

new MyError(DB_ER_CON_COUNT_ERROR ,"已到达数据库的最大连接数,请加大数据库可用连接数"),

new MyError(DB_ER_OUT_OF_RESOURCES ,"系统内存不足"),

new MyError(DB_ER_BADwww.61k.comERROR ,"无效的主机名"),

new MyError(DB_ER_HANDSHAKE_ERROR ,"无效连接"),

new MyError(DB_ER_DBACCESS_DENIED_ERROR ,"当前用户没有访问数据库的权限"),

new MyError(DB_ER_ACCESS_DENIED_ERROR ,"不能连接数据库,用户名或密码错误"),

new MyError(DB_ER_BAD_NULL_ERROR ,"字段不能为空"),

new MyError(DB_ER_BAD_DB_ERROR ,"数据库不存在"),

new MyError(DB_ER_TABLE_EXISTS_ERROR ,"数据表已存在"),

new MyError(DB_ER_BAD_TABLE_ERROR ,"数据表不存在"),

new MyError(DB_ER_BAD_FIELD_ERROR ,"字段不存在"),

new MyError(DB_ER_EMPTY_QUERY ,"无效的SQL语句,SQL语句为空"),

new MyError(DB_ER_IPSOCK_ERROR ,"不能建立Socket连接"),

new MyError(DB_ER_RECORD_FILE_FULL ,"数据表已满,不能容纳任何记录"),

new MyError(DB_ER_TOO_MANY_TABLES ,"打开的数据表太多"),

new MyError(DB_ERwww.61k.comIS_BLOCKED ,"数据库出现异常,请重启数据库"),

new MyError(DB_ERwww.61k.comNOT_PRIVILEGED ,"连接数据库失败,没有连接数据库的权限"),

new MyError(DB_ER_PASSWORD_NO_MATCH ,"数据库用户不存在"),

new MyError(DB_ER_NONEXISTING_GRANT ,"当前用户无权访问数据库"),

new MyError(DB_ER_TABLEACCESS_DENIED_ERROR ,"当前用户无权访问数据表"),

new MyError(DB_ER_COLUMNACCESS_DENIED_ERROR ,"当前用户无权访问数据表中的字段"),

new MyError(DB_ER_NO_SUCH_TABLE ,"数据表不存在"),

new MyError(DB_ER_NONEXISTING_TABLE_GRANT ,"未定义用户对数据表的访问权限"),

new MyError(DB_ER_SYNTAX_ERROR ,"SQL语句语法错误"),

new MyError(DB_ER_NET_READ_ERROR ,"网络错误,出现读错误,请检查网络连接状况"),

new MyError(DB_ER_NET_READ_INTERRUPTED ,"网络错误,读超时,请检查网络连接状况"),

new MyError(DB_ER_NET_ERROR_ON_WRITE ,"网络错误,出现写错误,请检查网络连接状况"),

new MyError(DB_ER_NET_WRITE_INTERRUPTED ,"网络错误,写超时,请检查网络连接状况"),

new MyError(DB_ER_DUP_ENTRY ,"字段值重复,入库失败"),

new MyError(DB_ER_DUP_UNIQUE ,"字段值重复,更新记录失败"),

new MyError(DB_ER_CHECK_NO_SUCH_TABLE ,"打开数据表失败"),

new MyError(DB_ER_ERROR_DURING_COMMIT ,"提交事务失败"),

new MyError(DB_ER_ERROR_DURING_ROLLBACK ,"回滚事务失败"),

new MyError(DB_ER_TOO_MANY_USER_CONNECTIONS ,"当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库"),

new MyError(DB_ER_LOCK_WAIT_TIMEOUT ,"加锁超时"),

new MyError(DB_ER_NO_PERMISSION_TO_CREATE_USER ,"当前用户没有创建用户的权限"),

new MyError(DB_ER_NO_REFERENCED_ROW ,"外键约束检查失败,更新子表记录失败"),

new MyError(DB_ER_ROW_IS_REFERENCED ,"外键约束检查失败,删除或修改主表记录失败"),

new MyError(DB_ER_USER_LIMIT_REACHED ,"当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器"),

new MyError(DB_ER_SPECIFIC_ACCESS_DENIED_ERROR ,"权限不足,您无权进行此操作"),

new MyError(DB_ER_NOT_SUPPORTED_YET ,"MySQL版本过低,不具有本功能"),

};


public static String getErrorInfo(int errno)

{

for(int i=0; i{

if(errno == errormap[i].getErrorNo())

{

return errormap[i].getErrorDesc();

}

}


return "";

}


public static void main(String[] args)

{

for(int i=0; i{

System.out.println(errormap[i].getErrorNo() + ":" + errormap[i].getErrorDesc());

}

}

}

二 : 如何将txt文本中的数据轻松导入MySQL表中

access中可以将文本中的数据轻松导入表中,mysql中用起来没那么方便,其实起来也很简单。首先将数据记录按行处理好用特定的字符分开如:“,”

记录形如:

aaa,bbb,ccc,ddd,eee

fff,ggg,hhh,iii,jjj,kkk

就行,建立loaddate.php

$hostname="localhost";

$username="yourname";

$password="yourpwd";

$dbname="yourdb";

mysql_connect(?$hostname,?$username,?$password);

mysql_select_db("?$dbname");

$mydate=file("yourdate.txt");

$n=count(?$mydate);

for(?$i=0;?$i<?$n;?$i++){

$date=explode(",",?$mydate[?$i]);

?$str="insert into ip values('?$date[0]','?$date[1]','?$date[2]','?$date[3]','?$date[4]')";//

mysql_query(?$str);

}

mysql_close();

echo "ok!";

?>

运行loaddate.

三 : 从MySQL导大量数据的程序实现方法

大家一定使用过 phpmyadmin 里面的数据库导入,导出功能,非常方便。但是在实际应用中,我发现如下几个问题:

1、数据库超过一定尺寸,比如6M 这时使用导出一般没问题,可以正确的保存到本机硬盘上面,但是导入则不行!原因是:一般的 PHP.INI 里面设置临时文件/上传文件的大小限制为2M,而phpmyadmin使用了上传的方式,造成失败。

2、导出到硬盘的 .SQL 文件在导回时,经常出现由于某些单引号的问题引起失败,造成导入失败,只能用 mysql等应用程序导入了。

我的数据库已经超过10M,所以必须解决这个问题。我的思路:

导出: 用phpmyadmin 保存数据库/表格结构,用脚本读取数据库内容并保存到文件里面!

导入: 用phpmyadmin 恢复数据库/表格结构,用脚本读取文件,然后保存到库里面!

导出程序如下:调用方法为 ****.php?table=tablename

这个简单的程序目前一次保存一个表格!!每行为一个字段的数据!!

if($table=="")exit();

mysql_connect("localhost","name","password");

mysql_select_db("database");

$result = mysql_query("select * from $table");

if(mysql_num_rows($result) <= 0) exit();

echo "开始转换数据到文本...

";

$handle = fopen("$table.txt","w");

$numfields = mysql_num_fields($result);

fputs($handle,$numfields."rn");

for($k=0;$k

{

$msg = mysql_fetch_row($result);

for($i=0;$i<$numfields;$i++)

{

$msg[$i] = str_replace("rn","&&php2000mysqlreturn&&",$msg[$i]);

$msg[$i] = str_replace("n" ,"&&php2000mysqlreturn&&",$msg[$i]);

fputs($handle,$msg[$i]."rn");

}

fputs($handle,"------- php2000 dump data program V1.0 for MySQL --------rn");

}

fclose($handle);

echo "ok";

?>

导入的程序如下:用法同上面!

if($table=="")exit();

mysql_connect("localhost","name","password");

mysql_select_db("database");

$message = file("$table.txt");

echo $numfields = chop($message[0]);

for($k=1;$k

{

$value="";

for ($i=$k;$i<($k+$numfields-1);$i++)

{

$tmp = str_replace("&&php2000mysqlreturn&&","rn",chop($message[$i]));

$value .= "'".addslashes($tmp)."',";

}

$tmp = str_replace("&&php2000mysqlreturn&&","rn",chop($message[$k+$numfields-1]));

$value .= "'".$tmp."'";

$query = "insert into $table values (".$value.")";

echo mysql_error();

mysql_query($query);

echo $k." ";

}
echo "ok";

?>

使用方法和可能的问题!

1、导入时 file()函数可能会有问题(我的10M的数据没出现问题),可以改为 fopen()然后没次读一行!!

2、导入,导出都需要用 ftp 操作,也就是导出后,用 ftp 把数据转到本机,导入时先用ftp转移数据到服务器!

四 : 从SQL server中将数据库导入Mysql数据库

因工作需要,要将存放在sql server数据库中的数据全部导入到mysql数据库中,在网上搜集相关资料,找到两种方法,现在分别谈谈对他们的看法。

第一种是安装mysql ODBC,利用sql server的导出功能,选择mysql数据源,进行数据的直接导出,这种方法很简便,但是针对实际应用有很多弊端,最主要体现就是数据类型问题,首先,sql server数据库中

的ntext,image等数据类型的数据无法直接写入到mysql数据库中,据说只要稍加改动就可以,可惜偶这只菜鸟还没想到如何改动,其次,因为偶在mysql中的数据库设计中将时间都设成int型(保存的是时间戳),所以在数据导过来后,就会出现冲突,再次,这种方法生成的mysql数据表的字段类型都不很合适,所以此种方法我觉得不能提倡。

第二种是利用php或asp脚本来实现数据的导入功能,这种方法需要编写程序,但灵活性大,操作也不是那么困难,一切都尽在你的掌握之中,现简单介绍一下该方法

前提条件是你的mysql环境已经搭建好了,先建好目标数据库,再将所有的表结构用sql语句生成,现在万事具备,只缺数据了。

可以通过下面的php脚本来实现sql server中mydb数据库的user表中数据向mysql中mydb数据库导入
 

将该段脚本存成sql.php,在服务器上执行,就可以将服务器上sql server中mydb数据库的user表中的数据导入到mysql中mydb数据库的user表中去。其他表的操作与此雷同,就不赘述了。

下面再介绍一下asp脚本实现sql server中mydb数据库的数据向mysql中mydb数据库导入
 

以上两个是分别采用php脚本和asp脚本对user表的数据进行由sql server到mysql的导入其间我采用2种回避的方法来避免ntext,image类型数据的传递,一种是将ntext字段改为nvarchar(4000),因为实际情况,原始数据中该字段的数据长度都未超过4000个字,所以并没有出现数据截断,另一个手段是将image类型数据取出来写到文件中,以文件形式保存,将文件路径存到数据库中,方法见下:

function makeattach(fileContentType,filevalue,i)

select case fileContentType

case "application/msword"

ext="doc"

case "application/vnd.ms-excel"
ext="exl"

case "application/vnd.ms-powerpoint"

ext="pps"

case "application/x-rar-compressed"

ext="rar"

case "application/x-zip-compressed"

ext="zip"

case "image/gif"

ext="gif"

case "image/pjpeg"

ext="jpg"

case "text/plain"

ext="txt"

case else

ext="x"

end select

if ext<>"x" then

set fso=server.createobject("FileSystemObject")

fName="attech"&i&"."&ext

Dir="d:attach"

If fso.FileExists(Dir & fName) Then fso.deletefile Dir & fName

If fName<>"" AND NOT fso.FileExists(Dir & fName) Then

Set strm1=Server.CreateObject("ADODB.Stream")

strm1.Open

strm1.Type=1 'Binary

strm1.Write filevalue

strm1.SaveToFile Dir & fName,2

Set strm1=Nothing

end if

makeattach=fName

end if

end function

这个函数有3个输入参数,第一个是文件的contentType,第二个是文件的二进制数值,第三个是个可以区别文件名的变量,先根据contentType确定所存文件的后缀名,然后就是将二进制数值保存成指定文件名的文件,并将文件名作为输出参数返回,将返回的参数作为数据写到mysql的数据库中保存。
时间匆忙,先总结到这里,希望这些文字能对有需要的人有些帮助,少走些弯路,感谢您的阅读。:)

本文标题:mysql数据库导入导出-MySQL数据库常见的出错代码及出错信息
本文地址: http://www.61k.com/1163302.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1