2011-11-18 81 views
0

我已经删除了(MySQL的)数据库我服务的一个表。现在有表格不存在的portlet错误消息。如何开始休闲?我从来没有手动创建服务表。它们是自动创建的,但现在停止了。如何创建服务构建在数据库表?

* UPDATE *

通过以上我的意思是我的自定义portlet项目的我的自定义表。我对他们的SQL文件名,当然也可以对一个服务器上运行它们,但想知道应该如何正常进行?

回答

1

你仍然有安装文件?如果是这样,请搜索他们的表名。在Linux上,这将是像

find /path/to/top/directory -type f -print0 | xargs -0r grep -il 'CREATE TABLE Xyz' 

其中Xyz就是你要找的表名。对于每一个文件,它列出,搜索CREATE TABLE XyzCREATE TABLE IF NOT EXISTS Xyz。这应该为缺失的表找到'创建'语句。如果该表也有触发它的事情,那就需要进一步的工作。

如果您没有安装文件,但你有你所有的binlogs的,你可以搜索(再次在linux)同

find /path/to/binlogs -type f -print0 \ 
| \ 
xargs -0r file \ 
| \ 
fgrep 'MySQL replication log' \ 
| \ 
cut -d: -f1 \ 
>/tmp/binlog.lst 
for b in $(</tmp/binlog.lst); do 
    echo -n $b 
    mysqlbinlog $b | grep -li 'CREATE TABLE Xyz' 
    echo 
done 

但即使无论这些方法的作品,只有它让你获得最初的'创造'声明。如果表中有安装或升级中的“alter table”,那么这是额外的搜索。

没有备份我想你是最好的选择是重新安装服务生成器的相同版本,然后在生成的表复制到当前的安装。

你往前走了,走的就是您目前有一个备份,例如,通过像我的自定义门户的mysqldump --opt --all-databases >large_dump_file

+0

抱歉,我的意思定制表。当然,我有他们的SQL文件,但我想知道如何正常创建表? – Dims