WEB开发网
开发学院数据库MySQL MySQL常见问题集锦解答及技巧 阅读

MySQL常见问题集锦解答及技巧

 2006-04-06 10:43:55 来源:WEB开发网   
核心提示: 用mysqladmin -h hostname flush-privileges或用SQL命令FLUSH PRIVILEGES来装载权限表, 使用DATE列的问题 DATE值的格式是'YYYY-MM-DD',MySQL常见问题集锦解答及技巧(4),改变一张表中列的顺序 在一

用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(至今)没有数据库复制,但是有一些如何实现的信息。

复制一个数据库最一般的方法是使用更新日志。

数据库备份

为了得到一个一致的备份,在相关的表上做一个LOCK TABLES。你只需一个读锁定;当你在数据库目录中做文件的一个拷贝时,这允许其他线程继续查询该表。如果你想要做一个SQL级的备份,你可以SELECT INTO OUTFILE。

备份一个数据库的另一个方法是使用mysqldump程序:

为你的数据库做一个完整的备份:

shell> mysqldump --tab=/path/to/some/dir --opt --full


  你也可以简单地拷贝所有的表文件(“*.frm”、“*.MYD”和“*.MYI”文件),只要服务器不在更新任何东西。

停止mysqld如果它正在运行,然后以--log-update选项启动它。你将得到一个名为“hostname.n”形式的日志文件, 这里n是随着你每次执行mysqladmin refresh或mysqladmin flush-logs、FLUSH LOGS语句、或重启服务器而递增的一个数字。这些日志文件向你提供了在你执行mysqldump处后面进行的复制数据库改变的所需信息。

如果你必须恢复一些东西,尝试首先用myisamchk -r恢复你的表。这应该处理所有情况的99.9%。如果myisamchk失败,尝试下列过程:


  恢复原来的mysqldump备份。

执行下列命令以再次运行更新日志中的更改:

shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql


  ls被用来以正确的顺序得到所有的日志文件。


  你也可以与SELECT * INTO OUTFILE 'file_name' FROM tbl_name做有选择的备份并且用LOAD DATA INFILE 'file_name' REPLACE ...恢复。为了避免重复记录,在表中你需要一个PRIMARY KEY或UNIQUE键。当在唯一键值上一个新记录与一个老记录重复时,REPLACE关键词使得老记录用一个新记录替代。

上一页  1 2 3 4 

Tags:MySQL 常见问题 集锦

编辑录入:coldstar [复制链接] [打 印]
赞助商链接