来源:www.cncfan.com | 2006-3-20 | (有3622人读过)
packet too large错误
一个mysql客户或mysqld服务器得到一个比max_allowed_packet个字节长的包
可以通过用mysql --set-variable=max_allowed_packet=8m指定一个更大的缓冲区来启动客户程序。
the table is full错误
这个错误发生在内存临时表变得比tmp_table_size字节大时。
commands out of sync in client错误
正在以错误的次序调用客户函数!
ignoring user错误
found wrong password for user: ''some_user@some_host''; ignoring user
这意味着在mysqld启动时或在它再次装载权限表时,它在user表中找到了一个有一个无效口令的条目。结果,条目简单地被权限系统忽略。
table ''xxx'' doesn''t exist错误
数据库和表名件是区分大小写的!可以用show tables检查你在当前数据库中有哪个表。
从一个文本文件运行sql命令
可以把sql命令放在一个文件中并且告诉mysql从该文件读取其输入:创造一个文本文件“text_file”,它包含要执行的命令。然后如下调用mysql:
shell> mysql database < text_file
或
shell> mysql < text_file
启动有use db_name语句的文本文件。
怎样重新设置一个忘记的口令
如果忘记了mysql的root用户的口令,可以使用如下方法恢复:
通过发送一个kill(不是kill -9)到mysqld服务器来关闭mysqld服务器。pid 被保存在一个.pid文件中,通常在mysql数据库目录中:
kill `cat /mysql-data-directory/hostname.pid`
你必须是一个unix root用户或运行服务器的相同用户做这个。
使用--skip-grant-tables选项重启mysqld。
用mysql -h hostname mysql连接mysqld服务器并且用一条grant命令改变口令。见7.26 grant和revoke句法。也可以用mysqladmin -h hostname -u user password ''new password'' 进行。
用mysqladmin -h hostname flush-privileges或用sql命令flush privileges来装载权限表。
使用date列的问题
date值的格式是''yyyy-mm-dd''。
改变一张表中列的顺序
在一个应用程序中,应该决不基于他们的位置使用select * 检索列,因为被返回的列的顺序永远不能保证;对数据库的一个简单改变可能导致应用程序相当有戏剧性地失败。
可以使用如下方法改变:
以正确的列顺序创建一张新表。
执行insert into new_table select fields-in-new_table-order from old_table.
删除或改名old_table。
alter table new_table rename old_table。
数据库复制
mysql(至今)没有数据库复制,但是有一些如何实现的信息。
复制一个数据库最一般的方法是使用更新日志。
|