如何在数据库中创建Service Builder的表?

时间:2011-11-18 09:57:39

标签: mysql service builder

我从(MySQL)数据库中删除了我的服务表。现在有portlet错误消息,表不存在。如何发起娱乐?我从未手动创建服务表。它们是自动创建的,但现在停止了。

*更新*

上面我指的是我的自定义portlet项目的自定义表。我有他们的SQL文件,当然可以针对服务器运行它们,但是想知道它应该如何正常完成?

1 个答案:

答案 0 :(得分: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。那应该找到丢失表的'create'语句。如果该表也有针对它的触发器,将需要进一步的工作。

如果您没有安装文件,但确实拥有所有binlog,则可以搜索(再次在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”,那么这是额外的搜索。

如果没有备份,我认为最好的办法是重新安装相同版本的Service Builder,然后将生成的表复制到当前安装中。

在您继续前进之前,请备份您当前拥有的内容,例如mysqldump --opt --all-databases >large_dump_file