我已从 (MySQL) 数据库中删除了我的服务表。现在有 portlet 错误消息表明表不存在。如何开始休闲?我从未手动创建过服务表。它们是自动创建的,但现在已停止。
* 更新 *
上面我的意思是我的自定义 portlet 项目的自定义表。我有它们的 SQL 文件,当然可以在服务器上运行它们,但想知道通常应该如何完成?
最佳答案
你还有安装文件吗?如果是这样,请在其中搜索表名。在 Linux 上,这将类似于
find /path/to/top/directory -type f -print0 | xargs -0r grep -il 'CREATE TABLE Xyz'
其中Xyz
是您要查找的表名。对于它列出的每个文件,搜索 CREATE TABLE Xyz
和 CREATE TABLE IF NOT EXISTS Xyz
。这应该找到丢失表的“创建”语句。如果该表也有针对它的触发器,则需要进一步的工作。
如果您没有安装文件,但有所有二进制日志,则可以使用以下命令搜索(同样在 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
但即使这些方法中的任何一种有效,它也只能为您提供原始的“创建”语句。如果该表在安装或升级中有“更改表”,则需要额外搜索。
如果没有备份,我认为您最好的选择是重新安装相同版本的 Service Builder,然后将生成的表复制到当前的安装中。
在继续之前,请备份当前拥有的内容,例如通过 mysqldump --opt --all-databases >large_dump_file
关于mysql - 如何在数据库中创建Service Builder的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8180615/