C++ berkeley db安装后编译链接的奇怪错误

officercat 2015-11-14 08:36:26


我在centos6.5上安装了berkeley db 6.1.6,是下源代码在本系统上重新编译安装的。

库如下:

ll -rt /usr/local/lib
-rwxr-xr-x 1 root root 2141065 11月 14 19:46 libdb-6.1.so
-rw-r--r-- 1 root root 929 11月 14 19:46 libdb-6.1.la
-rw-r--r-- 1 root root 3250156 11月 14 19:50 libdb-6.1.a
-rw-r--r-- 1 root root 3250156 11月 14 19:50 libdb.a
lrwxrwxrwx 1 root root 12 11月 14 19:50 libdb.so -> libdb-6.1.so
lrwxrwxrwx 1 root root 12 11月 14 19:50 libdb-6.so -> libdb-6.1.so

也运行了 ldconfig

用了document上的示例代码

#include <string.h>
#include <db_cxx.h>
using namespace std;
#define DESCRIPTION_SIZE 199

int main(int argc,char ** argv)
{
char *description = "Grocery bill.";
float money = 122.45;
Db my_database(NULL, 0);

Dbt key(&money, sizeof(float));
Dbt data(description, strlen(description) + 1);
int ret = my_database.put(NULL, &key, &data, DB_NOOVERWRITE);
if (ret == DB_KEYEXIST) {
my_database.err(ret, "Put failed because key %f already exists",money);
}
}

然后编译
gcc般般是4.9.2
clang++ main.cc -ldb -lpthread -o test_d -DHAVE_CXX_STDHEADERS
编译成功, 但链接错误:
[root@10-180-92-207 bigdata]# clang++ main.cc -ldb -lpthread -o test_d -DHAVE_CXX_STDHEADERS
/tmp/main-660df3.o: In function main':
main.cc:(.text+0x87): undefined reference toDb::Db(DbEnv*, unsigned int)'
main.cc:(.text+0x9f): undefined reference to Dbt::Dbt(void*, unsigned int)'
main.cc:(.text+0xd0): undefined reference toDbt::Dbt(void*, unsigned int)'
main.cc:(.text+0xf9): undefined reference to Db::put(DbTxn*, Dbt*, Dbt*, unsigned int)'
main.cc:(.text+0x147): undefined reference toDb::err(int, char const*, ...)'
main.cc:(.text+0x199): undefined reference to Dbt::Dbt()'
main.cc:(.text+0x1aa): undefined reference toDbt::Dbt()'
main.cc:(.text+0x242): undefined reference to Db::get(DbTxn*, Dbt*, Dbt*, unsigned int)'
main.cc:(.text+0x2ed): undefined reference toDbt::~Dbt()'
main.cc:(.text+0x2fe): undefined reference to Dbt::~Dbt()'
main.cc:(.text+0x30f): undefined reference toDbt::~Dbt()'
main.cc:(.text+0x320): undefined reference to Dbt::~Dbt()'
main.cc:(.text+0x331): undefined reference toDb::~Db()'
main.cc:(.text+0x36c): undefined reference to Dbt::~Dbt()'
main.cc:(.text+0x382): undefined reference toDbt::~Dbt()'
main.cc:(.text+0x398): undefined reference to Dbt::~Dbt()'
main.cc:(.text+0x3ae): undefined reference toDbt::~Dbt()'
main.cc:(.text+0x3c4): undefined reference to `Db::~Db()'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这就和完全啊没装berkeleydb的库一样的报错信息。
但问题是就libdb一个库文件,我也装了,就在系统默认目录下,也ldconfig了,-ldb也用了,就算用-L再明确指一遍也不行。。。

我在另一台ubuntu14.04的电脑上重复了以上操作还是一样的问题。

这是什么鬼?装多了开源库,第一次件berkeleydb这样让我摸不着头脑的。
...全文
462 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
officercat 2016-01-29
  • 打赏
  • 举报
回复
引用 2 楼 pww71 的回复:
太落伍了,什么年代了。用这个看看。 http://blog.csdn.net/pww71/article/details/25113303
有空会学习学习
officercat 2016-01-29
  • 打赏
  • 举报
回复
引用 1 楼 lingtian725 的回复:
gcc xxx.c -ldb g++ xxx.cpp -ldb_cxx
我是用错了库,没注意berkeleydb的安装库里有C 和C++两个不同的库文件,我在网上看的说明都是C的配置。
pww71 2016-01-20
  • 打赏
  • 举报
回复
太落伍了,什么年代了。用这个看看。 http://blog.csdn.net/pww71/article/details/25113303
BigCat_X 2016-01-20
  • 打赏
  • 举报
回复
gcc xxx.c -ldb g++ xxx.cpp -ldb_cxx
使用Subversion进行版本控制针对 Subversion 1.4(根据r2866编译) 参照网页版 http://svndoc.iusesvn.com/svnbook/1.4/制作而成。 目录 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书的结构 本书是免费的 致谢 来自 Ben Collins-Sussman 来自 Brian W. Fitzpatrick 来自 C. Michael Pilato Subversion是什么? Subversion的历史 Subversion的特性 Subversion的架构 Subversion的组件 1. 基本概念 版本库 版本模型 文件共享的问题 锁定-修改-解锁 方案 拷贝-修改-合并 方案 Subversion实践 Subversion版本库URL 工作拷贝 修订版本 工作拷贝怎样跟踪版本库 混合修订版本的工作拷贝 更新和提交是分开的 混合修订版本很常见 混合版本很有用 混合版本有限制 总结 2. 基本使用 求助! 导入数据到你的版本库 svn import 推荐的版本库布局 初始化检出 禁用密码缓存 用其它身份认证 基本的工作周期 更新你的工作拷贝 修改你的工作拷贝 检查你的修改 查看你的修改概况 检查你的本地修改的详情 取消本地修改 解决冲突(合并别人的修改) 手工合并冲突 复制文件到你的工作文件 脚注:使用svn revert 提交你的修改 检验历史 产生历史修改列表 检查历史修改的详情 比较本地修改 比较工作拷贝和版本库 比较版本库与版本库 浏览版本库 svn cat svn list 获得旧的版本库快照 有时你只需要清理 总结 3. 高级主题 版本清单 修订版本关键字 版本日期 属性 为什么需要属性? 操作属性 属性和 Subversion 工作流程 自动设置属性 文件移植性 文件内容类型 文件的可执行性 行结束字符串 忽略未版本控制的条目 关键字替换 锁定 创建锁定 发现锁定 解除和偷窃锁定 锁定交流 外部定义 Peg和实施修订版本 网络模型 请求和响应 客户端凭证缓存 4. 分支与合并 什么是分支? 使用分支 创建分支 在分支上工作 分支背后的关键概念 在分支间复制修改 复制特定的修改 合并背后的关键概念 合并的最佳实践 手工跟踪合并 预览合并 合并冲突 关注还是忽视祖先 合并和移动 常见用例 合并分支到另一分支 取消修改 找回删除的项目 常用分支模式 发布分支 特性分支 使用分支 标签 建立简单标签 建立复杂标签 分支维护 版本库布局 数据的生命周期 供方分支 常规的供方分支管理过程 svn_load_dirs.pl 总结 5. 版本库管理 Subversion 版本库的定义 版本库开发策略 规划你的版本库结构 决定在哪里与如何部署你的版本库 选择数据存储格式 Berkeley DB FSFS 创建和配置你的版本库 创建版本库 实现版本库钩子 Berkeley DB 配置 版本库维护 管理员的工具箱 svnadmin svnlook svndumpfilter svnsync Berkeley DB 工具 修正提交消息 管理磁盘空间 Subversion如何节约磁盘空间 删除终止的事务 删除不使用的Berkeley DB日志文件 Berkeley DB 恢复 版本库数据的移植 过滤版本库历史 版本库复制 版本库备份 总结 6. 服务配置 概述 选择一个服务器配置 svnserve服务器 svnserve使用SSH通道 Apache 的 HTTP 服务器 推荐 svnserve,一个自定义的服务器 调用服务器 svnserve作为守护进程 使用svnserve通过inetd 通过通道使用svnserve svnserve作为Windows服务 内置的认证和授权 创建一个用户文件和认证域 设置访问控制 SSH 隧道 SSH 配置技巧 初始设置 控制调用的命令 httpd,Apache的HTTP服务器 先决条件 基本的 Apache 配置 认证选项 基本HTTP认证 SSL 证书管理 授权选项 整体访问控制 每目录访问控制 禁用基于路径的检查 额外的糖果 版本库浏览 Apache 日志 其它特性 基于路径的授权 支持多种版本库访问方法 7. 定制你的Subversion体验 运行配置区 配置区布局 配置和Windows注册表 配置选项 服务器 配置 本地化 理解地区 Subversion对区域设置的支持 使用外置比较工具 外置 diff 外置 diff3 8. 嵌入Subversion 分层的库设计 版本库层 版本库访问层 客户端层 进入工作拷贝的管理区 条目文件 原始拷贝和属性文件 使用API Apache可移植运行库 URL 和路径需求 使用 C 和 C++ 以外的语言 代码样例 9. Subversion 完全参考 Subversion 命令行客户端:svn svn选项 svn子命令 svnadmin svnadmin选项 svnadmin子命令 svnlook svnlook选项 svnlook子命令 svnsync svnsync选项 svnsync子命令 svnserve svnserve选项 svnversion mod_dav_svn Subversion属性 版本控制的属性 未版本控制的属性 版本库钩子 A. Subversion 快速入门指南 安装 Subversion 快速指南 B. CVS用户的Subversion指南 版本号现在不同了 目录的版本 更多离线操作 区分状态和更新 状态 更新 分支和标签 元数据属性 解决冲突 二进制文件和行结束标记转换 版本化的模块 认证 迁移CVS版本库到Subversion C. WebDAV和自动版本 什么是WebDAV ? 自动版本化 客户端交互性 独立的 WebDAV 应用程序 Microsoft Office,Dreamweaver,Photoshop Cadaver,DAV 浏览器 文件浏览器 WebDAV 扩展 Microsoft Web 文件夹 Nautilus,Konqueror WebDAV文件系统实现 WebDrive,NetDrive Mac OS X Linux davfs2 D. 第三方工具 E. Copyright 索引 插图清单 1. Subversion的架构 1.1. 一个典型的客户/服务器系统 1.2. 需要避免的问题 1.3. 锁定-修改-解锁 方案 1.4. 拷贝-修改-合并 方案 1.5. 拷贝-修改-合并 方案(续) 1.6. 版本库的文件系统 1.7. 版本库 4.1. 分支与开发 4.2. 开始规划版本库 4.3. 版本库与复制 4.4. 一个文件的分支历史 8.1. 二维的文件和目录 8.2. 版本时间—第三维! 表格清单 1.1. 版本库访问URL 5.1. 版本库数据存储对照表 6.1. Subversion服务器选项比较 C.1. 常用WebDAV客户端 范例清单 5.1. txn-info.sh(报告异常事务) 5.2. 镜像版本库的 pre-revprop-change 钩子 5.3. 镜像版本库的 start-commit 钩子 6.1. 匿名访问的配置实例。 6.2. 一个认证访问的配置实例。 6.3. 一个混合认证/匿名访问的配置实例。 6.4. 禁用所有的路径检查 7.1. 注册表条目(.reg)样本文件。 7.2. diffwrap.sh 7.3. diffwrap.bat 7.4. diff3wrap.sh 7.5. diff3wrap.bat 8.1. 使用版本库层 8.2. 使用 Python 处理版本库层 8.3. 一个Python状态爬虫
1. 介绍 Subversion是什么? Subversion的历史 Subversion的特性 Subversion的架构 安装Subversion Subversion的组件 快速入门 2. 基本概念 版本库 版本模型 文件共享的问题 锁定-修改-解锁 方案 拷贝-修改-合并 方案 Subversion实战 工作拷贝 修订版本 工作拷贝怎样追踪版本库 修订版本混合的限制 摘要 3. 指导教程 帮助! 导入 修订版本: 号码、关键字和日期,噢,我的! 修订版本号 修订版本关键字 修订版本日期 初始化的Checkout 基本的工作周期 更新你的工作拷贝 修改你的工作拷贝 检查你的修改 svn status svn diff svn revert 解决冲突(合并别人的修改) 手工合并冲突 拷贝覆盖你的工作文件 下注:使用svn revert 提交你得修改 检验历史 svn log svn diff 比较本地修改 比较工作拷贝和版本库 比较版本库与版本库 svn cat svn list 关于历史的最后一个词 其他有用的命令 svn cleanup svn import 摘要 4. 分支与合并 什么是分支? 使用分支 创建分支 在分支上工作 分支背后的关键概念 在分支间拷贝修改 拷贝特定的修改 合并背后的关键概念 合并的最佳实践 手工追踪合并 预览合并 合并冲突 关注还是忽视祖先 常见用例 合并一条分支到另一支 取消修改 找回删除的项目 常用分支模式 发布分支 特性分支 转换工作拷贝 标签 建立最简单的标签 建立复杂的标签 分支维护 版本库布局 数据的生命周期 摘要 5. 版本库管理 版本库基本知识 理解事务和修订版本 未受版本控制的属性 版本库数据存储 Berkeley DB FSFS 版本库的创建和配置 钩子脚本 Berkeley DB配置 版本库维护 管理员的工具箱 svnlook svnadmin svndumpfilter svnshell.py Berkeley DB工具 版本库清理 管理磁盘空间 版本库的恢复 版本库的移植 版本库备份 添加项目 选择一种版本库布局 创建布局,导入初始数据 摘要 6. 配置服务器 概述 网络模型 请求和响应 客户端凭证缓存 svnserve,一个自定义的服务器 调用服务器 内置的认证和授权 创建一个用户文件和域 设置访问控制 SSH认证和授权 SSH配置技巧 初始设置 控制调用的命令 httpd,Apache的HTTP服务器 必备条件 基本的Apache配置 认证选项 基本HTTP认证 SSL证书管理 授权选项 整体访问控制 每目录访问控制 关闭路径为基础的检查 额外的糖果 版本库浏览 其它特性 支持多种版本库访问方法 7. 高级主题 运行配置区 配置区布局 配置和Windows注册表 配置选项 服务器 config 属性 为什么需要属性? 处理属性 特别属性 svn:executable svn:mime-type svn:ignore svn:keywords svn:eol-style svn:externals svn:special 自动属性设置 Peg和实施修订版本 外部定义 卖主分支 常规的卖主分支管理过程 svn_load_dirs.pl 本地化 理解地区 Subversion对地区的支持 Subversion版本库URL 8. 开发者信息 分层的库设计 版本库层 版本库访问层 RA-DAV(使用HTTP/DAV版本库访问) RA-SVN(自定义协议版本库访问) RA-Local(直接版本库访问) 你的RA库在这里 客户端层 使用API Apache可移植运行库 URL和路径需求 使用C和C++以外的语言 进入工作拷贝的管理区 条目文件 原始拷贝和属性文件 WebDAV 使用内存池编程 为Subversion做贡献 加入社区 取得源代码 开始熟悉社区政策 作出修改并测试 贡献你的修改 9. Subversion完全参考 Subversion命令行客户端:svn svn选项 svn子命令 svn add svn blame svn cat svn checkout svn cleanup svn commit svn copy svn delete svn diff svn export svn help svn import svn info svn list svn log svn merge svn mkdir svn move svn propdel svn propedit svn propget svn proplist svn propset svn resolved svn revert svn status svn switch svn update svnadmin svnadmin Switches svnadmin Subcommands svnadmin create svnadmin deltify svnadmin dump svnadmin help svnadmin hotcopy svnadmin list-dblogs svnadmin list-unused-dblogs svnadmin load svnadmin lstxns svnadmin recover svnadmin rmtxns svnadmin setlog svnadmin verify svnlook svnlook选项 svnlook svnlook author svnlook cat svnlook changed svnlook date svnlook diff svnlook dirs-changed svnlook help svnlook history svnlook info svnlook log svnlook propget svnlook proplist svnlook tree svnlook uuid svnlook youngest svnserve svnserve选项 svnversion svnversion mod_dav_svn mod_dav_svn Configuration Directives A. Subversion对于CVS用户 修订版本号现在不同了 目录的版本 更多离线操作 区分状态和更新 分支和标签 元数据属性 冲突解决 二进制文件和转化 版本化的模块 认证 转化CVS版本库到Subversion B. 故障解决 共同问题 使用Subversion的问题 每当我尝试访问版本库,我的Subversion客户端挂起。 每当我尝试运行svn,它告诉我工作拷贝已经锁定。 我在查找和打开版本库时得到错误,而我知道我的版本库URL是正确的。 我怎样在file://的URL中指定一个Windows驱动器盘符? 通过网络对Subversion版本库进行写操作发生问题。 在Windows XP下,Subversion服务器有时候看起来发送损坏的数据。 跟踪Subversion客户端和Apache服务器通话最好的方法是什么? 我刚刚编译了二进制分发版本,当我尝试检出Subversion,我得到一个“Unrecognized URL scheme”错误。 为什么svn revert命令要有一个明确的目标?为什么缺省不是递归的?它的行为方式与大多数其它子命令不同。 当我启动Apache,mod_dav_svn抱怨说发现一个“bad database version”,它发现了db-3.X而不是db-4.X。 我在RedHat 9得到“Function not implemented”错误,无法工作,我如何修正这个问题? 为什么日志说通过Apache(ra_dav)提交或导入的文件“(no author)”? 我偶然在Windows得到“Access Denied”错误,它们看起来随即出现。 在FreeBSD,某些操作(特别是svnadmin create)有时会挂起。 我可以在web浏览器看到我的版本库,但是svn checkout给我一个301 Moved Permanently错误。 我尝试察看我的文件的一个老版本,但是svn告诉我“path not found”。 C. WebDAV和自动版本化 WebDAV基本概念 仅是平常的WebDAV DeltaV扩展 Subversion和DeltaV 影射Subversion到DeltaV 自动版本化支持 选择mod_dav_lock 自动版本化交互性 Win32网络文件夹 Mac OS X Unix: Nautilus 2 Linux davfs2 D. 第三方工具 客户端和插件 语言绑定 版本库转化 高级工具 版本库浏览工具 E. 版权 术语表 插图清单 1.1. Subversion的架构 2.1. 一个典型的客户/服务器系统 2.2. 需要避免的问题 2.3. 锁定-修改-解锁 方案 2.4. 拷贝-修改-合并 方案 2.5. 拷贝-修改-合并 方案(续) 2.6. 版本库的文件系统 2.7. 版本库 4.1. 分支开发 4.2. 开始规划版本库 4.3. 拷贝后的版本库 4.4. 一个文件的分支历史 8.1. 二维的文件目录 8.2. 版本时间—第三维! 表格清单 2.1. 版本库访问URL 5.1. 版本库数据存储对照表 6.1. 网络服务器比较 8.1. Subversion库的摘要目录 范例清单 5.1. 使用svnshell浏览版本库 5.2. txn-info.sh(异常事务报告) 6.1. 匿名访问的配置实例。 6.2. 一个认证访问的配置实例。 6.3. 一个混合认证/匿名访问的配置实例。 6.4. 关闭所有的路经检查 7.1. 注册表条目(.reg)样本文件。 8.1. 使用版本库层 8.2. 使用Python处理版本库层 8.3. 一段检出工作拷贝的简单脚本 8.4. 典型的.svn/entries文件内容 8.5. 有效地池使用
目录 译者序 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书组织结构 Subversion 1.1的新特性 这本书是免费的 致谢 来自Ben Collins-Sussman 来自Brian W. Fitzpatrick 来自C. Michael Pilato 1. 介绍 Subversion是什么? Subversion的历史 Subversion的特性 Subversion的架构 安装Subversion Subversion的组件 快速入门 2. 基本概念 版本库 版本模型 文件共享的问题 锁定-修改-解锁 方案 拷贝-修改-合并 方案 Subversion实战 工作拷贝 修订版本 工作拷贝怎样追踪版本库 修订版本混合的限制 摘要 3. 指导教程 帮助! 导入 修订版本: 号码、关键字和日期,噢,我的! 修订版本号 修订版本关键字 修订版本日期 初始化的Checkout 基本的工作周期 更新你的工作拷贝 修改你的工作拷贝 检查你的修改 svn status svn diff svn revert 解决冲突(合并别人的修改) 手工合并冲突 拷贝覆盖你的工作文件 下注:使用svn revert 提交你得修改 检验历史 svn log svn diff 比较本地修改 比较工作拷贝和版本库 比较版本库与版本库 svn cat svn list 关于历史的最后一个词 其他有用的命令 svn cleanup svn import 摘要 4. 分支与合并 什么是分支? 使用分支 创建分支 在分支上工作 分支背后的关键概念 在分支间拷贝修改 拷贝特定的修改 合并背后的关键概念 合并的最佳实践 手工追踪合并 预览合并 合并冲突 关注还是忽视祖先 常见用例 合并一条分支到另一支 取消修改 找回删除的项目 常用分支模式 发布分支 特性分支 转换工作拷贝 标签 建立最简单的标签 建立复杂的标签 分支维护 版本库布局 数据的生命周期 摘要 5. 版本库管理 版本库基本知识 理解事务和修订版本 未受版本控制的属性 版本库数据存储 Berkeley DB FSFS 版本库的创建和配置 钩子脚本 Berkeley DB配置 版本库维护 管理员的工具箱 svnlook svnadmin svndumpfilter svnshell.py Berkeley DB工具 版本库清理 管理磁盘空间 版本库的恢复 版本库的移植 版本库备份 添加项目 选择一种版本库布局 创建布局,导入初始数据 摘要 6. 配置服务器 概述 网络模型 请求和响应 客户端凭证缓存 svnserve,一个自定义的服务器 调用服务器 内置的认证和授权 创建一个用户文件和域 设置访问控制 SSH认证和授权 SSH配置技巧 初始设置 控制调用的命令 httpd,Apache的HTTP服务器 必备条件 基本的Apache配置 认证选项 基本HTTP认证 SSL证书管理 授权选项 整体访问控制 每目录访问控制 关闭路径为基础的检查 额外的糖果 版本库浏览 其它特性 支持多种版本库访问方法 7. 高级主题 运行配置区 配置区布局 配置和Windows注册表 配置选项 服务器 config 属性 为什么需要属性? 处理属性 特别属性 svn:executable svn:mime-type svn:ignore svn:keywords svn:eol-style svn:externals svn:special 自动属性设置 Peg和实施修订版本 外部定义 卖主分支 常规的卖主分支管理过程 svn_load_dirs.pl 本地化 理解地区 Subversion对地区的支持 Subversion版本库URL 8. 开发者信息 分层的库设计 版本库层 版本库访问层 RA-DAV(使用HTTP/DAV版本库访问) RA-SVN(自定义协议版本库访问) RA-Local(直接版本库访问) 你的RA库在这里 客户端层 使用API Apache可移植运行库 URL和路径需求 使用C和C++以外的语言 进入工作拷贝的管理区 条目文件 原始拷贝和属性文件 WebDAV 使用内存池编程 为Subversion做贡献 加入社区 取得源代码 开始熟悉社区政策 作出修改并测试 贡献你的修改 9. Subversion完全参考 Subversion命令行客户端:svn svn选项 svn子命令 svn add svn blame svn cat svn checkout svn cleanup svn commit svn copy svn delete svn diff svn export svn help svn import svn info svn list svn log svn merge svn mkdir svn move svn propdel svn propedit svn propget svn proplist svn propset svn resolved svn revert svn status svn switch svn update svnadmin svnadmin Switches svnadmin Subcommands svnadmin create svnadmin deltify svnadmin dump svnadmin help svnadmin hotcopy svnadmin list-dblogs svnadmin list-unused-dblogs svnadmin load svnadmin lstxns svnadmin recover svnadmin rmtxns svnadmin setlog svnadmin verify svnlook svnlook选项 svnlook svnlook author svnlook cat svnlook changed svnlook date svnlook diff svnlook dirs-changed svnlook help svnlook history svnlook info svnlook log svnlook propget svnlook proplist svnlook tree svnlook uuid svnlook youngest svnserve svnserve选项 svnversion svnversion mod_dav_svn mod_dav_svn Configuration Directives A. Subversion对于CVS用户 修订版本号现在不同了 目录的版本 更多离线操作 区分状态和更新 分支和标签 元数据属性 冲突解决 二进制文件和转化 版本化的模块 认证 转化CVS版本库到Subversion B. 故障解决 共同问题 使用Subversion的问题 每当我尝试访问版本库,我的Subversion客户端挂起。 每当我尝试运行svn,它告诉我工作拷贝已经锁定。 我在查找和打开版本库时得到错误,而我知道我的版本库URL是正确的。 我怎样在file://的URL中指定一个Windows驱动器盘符? 通过网络对Subversion版本库进行写操作发生问题。 在Windows XP下,Subversion服务器有时候看起来发送损坏的数据。 跟踪Subversion客户端和Apache服务器通话最好的方法是什么? 我刚刚编译了二进制分发版本,当我尝试检出Subversion,我得到一个“Unrecognized URL scheme”错误。 为什么svn revert命令要有一个明确的目标?为什么缺省不是递归的?它的行为方式与大多数其它子命令不同。 当我启动Apache,mod_dav_svn抱怨说发现一个“bad database version”,它发现了db-3.X而不是db-4.X。 我在RedHat 9得到“Function not implemented”错误,无法工作,我如何修正这个问题? 为什么日志说通过Apache(ra_dav)提交或导入的文件“(no author)”? 我偶然在Windows得到“Access Denied”错误,它们看起来随即出现。 在FreeBSD,某些操作(特别是svnadmin create)有时会挂起。 我可以在web浏览器看到我的版本库,但是svn checkout给我一个301 Moved Permanently错误。 我尝试察看我的文件的一个老版本,但是svn告诉我“path not found”。 C. WebDAV和自动版本化 WebDAV基本概念 仅是平常的WebDAV DeltaV扩展 Subversion和DeltaV 影射Subversion到DeltaV 自动版本化支持 选择mod_dav_lock 自动版本化交互性 Win32网络文件夹 Mac OS X Unix: Nautilus 2 Linux davfs2 D. 第三方工具 客户端和插件 语言绑定 版本库转化 高级工具 版本库浏览工具 E. 版权 术语表 插图清单 1.1. Subversion的架构 2.1. 一个典型的客户/服务器系统 2.2. 需要避免的问题 2.3. 锁定-修改-解锁 方案 2.4. 拷贝-修改-合并 方案 2.5. 拷贝-修改-合并 方案(续) 2.6. 版本库的文件系统 2.7. 版本库 4.1. 分支开发 4.2. 开始规划版本库 4.3. 拷贝后的版本库 4.4. 一个文件的分支历史 8.1. 二维的文件目录 8.2. 版本时间—第三维! 表格清单 2.1. 版本库访问URL 5.1. 版本库数据存储对照表 6.1. 网络服务器比较 8.1. Subversion库的摘要目录 范例清单 5.1. 使用svnshell浏览版本库 5.2. txn-info.sh(异常事务报告) 6.1. 匿名访问的配置实例。 6.2. 一个认证访问的配置实例。 6.3. 一个混合认证/匿名访问的配置实例。 6.4. 关闭所有的路经检查 7.1. 注册表条目(.reg)样本文件。 8.1. 使用版本库层 8.2. 使用Python处理版本库层 8.3. 一段检出工作拷贝的简单脚本 8.4. 典型的.svn/entries文件内容 8.5. 有效地池使用
前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 1.5.1. 什么是MaxDB? 1.5.2. MaxDB的历史 1.5.3. MaxDB的特性 1.5.4. 许可和支持 1.5.5. MaxDB和MySQL之间的特性差异 1.5.6. MaxDB和MySQL之间的协同性 1.5.7. 与MaxDB有关的链接 1.6. MySQL发展大事记 1.6.1. MySQL 5.1的新特性 1.7. MySQL信息源 1.7.1. MySQL邮件列表 1.7.2. IRC(在线聊天系统)上的MySQL社区支持 1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. MySQL处理约束的方式 2. 安装MySQL 2.1. 一般安装问题 2.1.1. MySQL支持的操作系统 2.1.2. 选择要安装的MySQL分发版 2.1.3. 怎样获得MySQL 2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装安装MySQL 2.3.4. 使用MySQL安装向导 2.3.5. 使用配置向导 2.3.6. 通过非安装Zip文件安装MySQL 2.3.7. 提取安装档案文件 2.3.8. 创建选项文件 2.3.9. 选择MySQL服务器类型 2.3.10. 首次启动服务器 2.3.11. 从Windows命令行启动MySQL 2.3.12. 以Windows服务方式启动MySQL 2.3.13. 测试MySQL安装 2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从源码安装MySQL 2.8.7. 在Windows下编译MySQL客户端 2.9. 安装后的设置和测试 2.9.1. Windows下安装后的过程 2.9.2. Unix下安装后的过程 2.9.3. 使初始MySQL账户安全 2.10. 升级MySQL 2.10.1. 从5.0版升级 2.10.2. 升级授权表 2.10.3. 将MySQL数据库拷贝到另一台机器 2.11. 降级MySQL 2.12. 具体操作系统相关的注意事项 2.12.1. Linux注意事项 2.12.2. Mac OS X注意事项 2.12.3. Solaris注意事项 2.12.4. BSD注意事项 2.12.5. 其它Unix注意事项 2.12.6. OS/2注意事项 2.13. Perl安装注意事项 2.13.1. 在Unix中安装Perl 2.13.2. 在Windows下安装ActiveState Perl 2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. 常用查询的例子 3.6.1. 列的最大值 3.6.2. 拥有某个列的最大值的行 3.6.3. 列的最大值:按组 3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8. 根据天计算访问量 3.6.9. 使用AUTO_INCREMENT 3.7. 孪生项目的查询 3.7.1. 查找所有未分发的孪生项 3.7.2. 显示孪生对状态的表 3.8. 与Apache一起使用MySQL 4. MySQL程序概述 4.1. MySQL程序概述 4.2. 调用MySQL程序 4.3. 指定程序选项 4.3.1. 在命令行上使用选项 4.3.2. 使用选项文件 4.3.3. 用环境变量指定选项 4.3.4. 使用选项设置程序变量 5. 数据库管理 5.1. MySQL服务器和服务器启动脚本 5.1.1. 服务器端脚本和实用工具概述 5.1.2. mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建用户账户 5.2.3. MySQL实例管理器命令行选项 5.2.4. MySQL实例管理器配置文件 5.2.5. MySQL实例管理器识别的命令 5.3. mysqld:MySQL服务器 5.3.1. mysqld命令行选项 5.3.2. SQL服务器模式 5.3.3. 服务器系统变量 5.3.4. 服务器状态变量 5.4. mysql_fix_privilege_tables:升级MySQL系统表 5.5. MySQL服务器关机进程 5.6. 一般安全问题 5.6.1. 通用安全指南 5.6.2. 使MySQL在攻击者面前保持安全 5.6.3. Mysqld安全相关启动选项 5.6.4. LOAD DATA LOCAL安全问题 5.7. MySQL访问权限系统 5.7.1. 权限系统的作用 5.7.2. 权限系统工作原理 5.7.3. MySQL提供的权限 5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1:连接核实 5.7.6. 访问控制, 阶段2:请求核实 5.7.7. 权限更改何时生效 5.7.8. 拒绝访问错误的原因 5.7.9. MySQL 4.1中的密码哈希处理 5.8. MySQL用户账户管理 5.8.1. MySQL用户名和密码 5.8.2. 向MySQL增加新用户账户 5.8.3. 从MySQL删除用户账户 5.8.4. 限制账户资源 5.8.5. 设置账户密码 5.8.6. 使你的密码安全 5.8.7. 使用安全连接 5.9. 备份与恢复 5.9.1. 数据库备份 5.9.2. 示例用备份与恢复策略 5.9.3. 自动恢复 5.9.4. 表维护和崩溃恢复 5.9.5. myisamchk:MyISAM表维护实用工具 5.9.6. 建立表维护计划 5.9.7. 获取关于表的信息 5.10. MySQL本地化和国际应用 5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL日志文件 5.11.1. 错误日志 5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多服务器环境中使用客户端程序 5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3. 复制实施细节 6.3.1. 复制主线程状态 6.3.2. 复制从I/O线程状态 6.3.3. 复制从SQL线程状态 6.3.4. 复制传递和状态文件 6.4. 如何设置复制 6.5. 不同MySQL版本之间的复制兼容性 6.6. 升级复制设置 6.6.1. 将复制升级到5.0版 6.7. 复制特性和已知问题 6.8. 复制启动选项 6.9. 复制FAQ 6.10. 复制故障诊断与排除 6.11. 通报复制缺陷 6.12. 多服务器复制中的Auto-Increment 7. 优化 7.1. 优化概述 7.1.1. MySQL设计局限与折衷 7.1.2. 为可移植性设计应用程序 7.1.3. 我们已将MySQL用在何处? 7.1.4. MySQL基准套件 7.1.5. 使用自己的基准 7.2. 优化SELECT语句和其它查询 7.2.1. EXPLAIN语法(获取SELECT相关信息) 7.2.2. 估计查询性能 7.2.3. SELECT查询的速度 7.2.4. MySQL怎样优化WHERE子句 7.2.5. 范围优化 7.2.6. 索引合并优化 7.2.7. MySQL如何优化IS NULL 7.2.8. MySQL如何优化DISTINCT 7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN 7.2.10. MySQL如何优化嵌套Join 7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. DELETE语句的速度 7.2.19. 其它优化技巧 7.3. 锁定事宜 7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.4. 优化数据库结构 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 7.4.6. MyISAM键高速缓冲 7.4.7. MyISAM索引统计集合 7.4.8. MySQL如何计算打开的表 7.4.9. MySQL如何打开和关闭表 7.4.10. 在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 7.5.6. MySQL如何使用DNS 7.6. 磁盘事宜 7.6.1. 使用符号链接 8. 客户端和实用工具程序 8.1. 客户端脚本和实用工具概述 8.2. myisampack:生成压缩、只读MyISAM表 8.3. mysql:MySQL命令行工具 8.3.1. 选项 8.3.2. mysql命令 8.3.3. 怎样从文本文件执行SQL语句 8.3.4. mysql技巧 8.4. mysqlaccess:用于检查访问权限的客户端 8.5. mysqladmin:用于管理MySQL服务器的客户端 8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM日志文件内容 8.13. perror:解释错误代码 8.14. replace:字符串替换实用工具 8.15. mysql_zap:杀死符合某一模式的进程 9. 语言结构 9.1. 文字值 9.1.1. 字符串 9.1.2. 数值 9.1.3. 十六进制值 9.1.4. 布尔值 9.1.5. 位字段值 9.1.6. NULL值 9.2. 数据库、表、索引、列和别名 9.2.1. 识别符限制条件 9.2.2. 识别符大小写敏感性 9.3. 用户变量 9.4. 系统变量 9.4.1. 结构式系统变量 9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符集和校对 10.3.7. 字符串文字字符集和校对 10.3.8. 在SQL语句中使用COLLATE 10.3.9. COLLATE子句优先 10.3.10. BINARY操作符 10.3.11. 校对确定较为复杂的一些特殊情况 10.3.12. 校对必须适合字符集 10.3.13. 校对效果的示例 10.4. 字符集支持影响到的操作 10.4.1. 结果字符串 10.4.2. CONVERT() 10.4.3. CAST() 10.4.4. SHOW语句 10.5. Unicode支持 10.6. 用于元数据的UTF8 10.7. 与其它DBMS的兼容性 10.8. 新字符集配置文件格式 10.9. 国家特有字符集 10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 11.1. 列类型概述 11.1.1. 数值类型概述 11.1.2. 日期和时间类型概述 11.1.3. 字符串类型概述 11.2. 数值类型 11.3. 日期和时间类型 11.3.1. DATETIME、DATE和TIMESTAMP类型 11.3.2. TIME类型 11.3.3. YEAR类型 11.3.4. Y2K事宜和日期类型 11.4. String类型 11.4.1. CHAR和VARCHAR类型 11.4.2. BINARY和VARBINARY类型 11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型 11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串比较函数 12.4. 数值函数 12.4.1. 算术操作符 12.4.2. 数学函数 12.5. 日期和时间函数 12.6. MySQL使用什么日历? 12.7. 全文搜索功能 12.7.1. 布尔全文搜索 12.7.2. 全文搜索带查询扩展 12.7.3. 全文停止字 12.7.4. 全文限定条件 12.7.5. 微调MySQL全文搜索 12.8. Cast函数和操作符 12.9. 其他函数 12.9.1. 位函数 12.9.2. 加密函数 12.9.3. 信息函数 12.9.4. 其他函数 12.10. 与GROUP BY子句同时使用的函数和修改程序 12.10.1. GROUP BY(聚合)函数 12.10.2. GROUP BY修改程序 12.10.3. 具有隐含字段的GROUP BY 13. SQL语句语法 13.1. 数据定义语句 13.1.1. ALTER DATABASE语法 13.1.2. ALTER TABLE语法 13.1.3. CREATE DATABASE语法 13.1.4. CREATE INDEX语法 13.1.5. CREATE TABLE语法 13.1.6. DROP DATABASE语法 13.1.7. DROP INDEX语法 13.1.8. DROP TABLE语法 13.1.9. RENAME TABLE语法 13.2. 数据操作语句 13.2.1. DELETE语法 13.2.2. DO语法 13.2.3. HANDLER语法 13.2.4. INSERT语法 13.2.5. LOAD DATA INFILE语法 13.2.6. REPLACE语法 13.2.7. SELECT语法 13.2.8. Subquery语法 13.2.9. TRUNCATE语法 13.2.10. UPDATE语法 13.3. MySQL实用工具语句 13.3.1. DESCRIBE语法(获取有关列的信息) 13.3.2. USE语法 13.4. MySQL事务处理和锁定语句 13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法 13.4.2. 不能回滚的语句 13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 13.5.2. 表维护语句 13.5.3. SET语法 13.5.4. SHOW语法 13.5.5. 其它管理语句 13.6. 复制语句 13.6.1. 用于控制主服务器的SQL语句 13.6.2. 用于控制从服务器的SQL语句 13.7. 用于预处理语句的SQL语法 14. 插件式存储引擎体系结构 14.1. 前言 14.2. 概述 14.3. 公共MySQL数据库服务器层 14.4. 选择存储引擎 14.5. 将存储引擎指定给表 14.6. 存储引擎和事务 14.7. 插入存储引擎 14.8. 拔出存储引擎 14.9. 插件式存储器的安全含义 15. 存储引擎和表类型 15.1. MyISAM存储引擎 15.1.1. MyISAM启动选项 15.1.2. 键所需的空间 15.1.3. MyISAM表的存储格式 15.1.4. MyISAM表方面的问题 15.2. InnoDB存储引擎 15.2.1. InnoDB概述 15.2.2. InnoDB联系信息 15.2.3. InnoDB配置 15.2.4. InnoDB启动选项 15.2.5. 创建InnoDB表空间 15.2.6. 创建InnoDB表 15.2.7. 添加和删除InnoDB数据和日志文件 15.2.8. InnoDB数据库的备份和恢复 15.2.9. 将InnoDB数据库移到另一台机器上 15.2.10. InnoDB事务模型和锁定 15.2.11. InnoDB性能调节提示 15.2.12. 多版本的实施 15.2.13. 表和索引结构 15.2.14. 文件空间管理和磁盘I/O 15.2.15. InnoDB错误处理 15.2.16. 对InnoDB表的限制 15.2.17. InnoDB故障诊断与排除 15.3. MERGE存储引擎 15.3.1. MERGE表方面的问题 15.4. MEMORY (HEAP)存储引擎 15.5. BDB (BerkeleyDB)存储引擎 15.5.1. BDB支持的操作系统 15.5.2. 安装BDB 15.5.3. BDB启动选项 15.5.4. BDB表的特性 15.5.5. 修改BDB所需的事宜 15.5.6. 对BDB表的限制 15.5.7. 使用BDB表时可能出现的错误 15.6. EXAMPLE存储引擎 15.7. FEDERATED存储引擎 15.7.1. 安装FEDERATED存储引擎 15.7.2. FEDERATED存储引擎介绍 15.7.3. 如何使用FEDERATED表 15.7.4. FEDERATED存储引擎的局限性 15.8. ARCHIVE存储引擎 15.9. CSV存储引擎 15.10. BLACKHOLE存储引擎 16. 编写自定义存储引擎 16.1. 前言 16.2. 概述 16.3. 创建存储引擎源文件 16.4. 创建handlerton 16.5. 对处理程序进行实例化处理 16.6. 定义表扩展 16.7. 创建表 16.8. 打开表 16.9. 实施基本的表扫描功能 16.9.1. 实施store_lock()函数 16.9.2. 实施external_lock()函数 16.9.3. 实施rnd_init()函数 16.9.4. 实施info()函数 16.9.5. 实施extra()函数 16.9.6. 实施rnd_next()函数 16.10. 关闭表 16.11. 为存储引擎添加对INSERT的支持 16.12. 为存储引擎添加对UPDATE的支持 16.13. 为存储引擎添加对DELETE的支持 16.14. API引用 16.14.1. bas_ext 16.14.2. close 16.14.3. create 16.14.4. delete_row 16.14.5. delete_table 16.14.6. external_lock 16.14.7. extra 16.14.8. info 16.14.9. open 16.14.10. rnd_init 16.14.11. rnd_next 16.14.12. store_lock 16.14.13. update_row 16.14.14. write_row 17. MySQL簇 17.1. MySQL簇概述 17.2. MySQL簇的基本概念 17.3. 多计算机的简单基础知识 17.3.1. 硬件、软件和联网 17.3.2. 安装 17.3.3. 配置 17.3.4. 首次启动 17.3.5. 加载示例数据并执行查询 17.3.6. 安全关闭和重启 17.4. MySQL簇的配置 17.4.1. 从源码创建MySQL簇 17.4.2. 安装软件 17.4.3. MySQL簇的快速测试设置 17.4.4. 配置文件 17.5. MySQL簇中的进程管理 17.5.1. 用于MySQL簇的MySQL服务器进程使用 17.5.2. ndbd,存储引擎节点进程 17.5.3. ndb_mgmd,“管理服务器”进程 17.5.4. ndb_mgm,“管理客户端”进程 17.5.5. 用于MySQL簇进程的命令选项 17.6. MySQL簇的管理 17.6.1. MySQL簇的启动阶段 17.6.2. “管理客户端”中的命令 17.6.3. MySQL簇中生成的事件报告 17.6.4. 单用户模式 17.6.5. MySQL簇的联机备份 17.7. 使用与MySQL簇的高速互连 17.7.1. 配置MySQL簇以使用SCI套接字 17.7.2. 理解簇互连的影响 17.8. MySQL簇的已知限制 17.9. MySQL簇发展的重要历程 17.9.1. MySQL 5.0中的MySQL簇变化 17.9.2. 关于MySQL簇的MySQL 5.1发展历程 17.10. MySQL簇常见问题解答 17.11. MySQL簇术语表 18. 分区 18.1. MySQL中的分区概述 18.2. 分区类型 18.2.1. RANGE分区 18.2.2. LIST分区 18.2.3. HASH分区 18.2.4. KEY分区 18.2.5. 子分区 18.2.6. MySQL分区处理NULL值的方式 18.3. 分区管理 18.3.1. RANGE和LIST分区的管理 18.3.2. HASH和KEY分区的管理 18.3.3. 分区维护 18.3.4. 获取关于分区的信息 19. MySQL中的空间扩展 19.1. 前言 19.2. OpenGIS几何模型 19.2.1. Geometry类的层次 19.2.2. 类Geometry 19.2.3. 类Point 19.2.4. 类Curve 19.2.5. 类LineString 19.2.6. 类Surface 19.2.7. 类Polygon 19.2.8. 类GeometryCollection 19.2.9. 类MultiPoint 19.2.10. 类MultiCurve 19.2.11. 类MultiLineString 19.2.12. 类MultiSurface 19.2.13. 类MultiPolygon 19.3. 支持的空间数据格式 19.3.1. 著名的文本(WKT)格式 19.3.2. 著名的二进制(WKB)格式 19.4. 创建具备空间功能的MySQL数据库 19.4.1. MySQL空间数据类型 19.4.2. 创建空间值 19.4.3. 创建空间列 19.4.4. 填充空间列 19.4.5. 获取空间数据 19.5. 分析空间信息 19.5.1. Geometry格式转换函数 19.5.2. Geometry函数 19.5.3. 从已有Geometry创建新Geometry的函数 19.5.4. 测试几何对象间空间关系的函数 19.5.5. 关于几何最小边界矩形(MBR)的关系 19.5.6. 测试几何类之间空间关系的函数 19.6. 优化空间分析 19.6.1. 创建空间索引 19.6.2. 使用空间索引 19.7. MySQL的一致性和兼容性 19.7.1. 尚未实施的GIS特性 20. 存储程序和函数 20.1. 存储程序和授权表 20.2. 存储程序的语法 20.2.1. CREATE PROCEDURE和CREATE FUNCTION 20.2.2. ALTER PROCEDURE和ALTER FUNCTION 20.2.3. DROP PROCEDURE和DROP FUNCTION 20.2.4. SHOW CREATE PROCEDURE和SHOW CREATE FUNCTION 20.2.5. SHOW PROCEDURE STATUS和SHOW FUNCTION STATUS 20.2.6. CALL语句 20.2.7. BEGIN ... END复合语句 20.2.8. DECLARE语句 20.2.9. 存储程序中的变量 20.2.10. 条件和处理程序 20.2.11. 光标 20.2.12. 流程控制构造 20.3. 存储程序、函数、触发程序和复制:常见问题 20.4. 存储子程序和触发程序的二进制日志功能 21. 触发程序 21.1. CREATE TRIGGER语法 21.2. DROP TRIGGER语法 21.3. 使用触发程序 22. 视图 22.1. ALTER VIEW语法 22.2. CREATE VIEW语法 22.3. DROP VIEW语法 22.4. SHOW CREATE VIEW语法 23. INFORMATION_SCHEMA信息数据库 23.1. INFORMATION_SCHEMA表 23.1.1. INFORMATION_SCHEMA SCHEMATA表 23.1.2. INFORMATION_SCHEMA TABLES表 23.1.3. INFORMATION_SCHEMA COLUMNS表 23.1.4. INFORMATION_SCHEMA STATISTICS表 23.1.5. INFORMATION_SCHEMA USER_PRIVILEGES表 23.1.6. INFORMATION_SCHEMA SCHEMA_PRIVILEGES表 23.1.7. INFORMATION_SCHEMA TABLE_PRIVILEGES表 23.1.8. INFORMATION_SCHEMA COLUMN_PRIVILEGES表 23.1.9. INFORMATION_SCHEMA CHARACTER_SETS表 23.1.10. INFORMATION_SCHEMA COLLATIONS表 23.1.11. INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY表 23.1.12. INFORMATION_SCHEMA TABLE_CONSTRAINTS表 23.1.13. INFORMATION_SCHEMA KEY_COLUMN_USAGE表 23.1.14. INFORMATION_SCHEMA ROUTINES表 23.1.15. INFORMATION_SCHEMA VIEWS表 23.1.16. INFORMATION_SCHEMA TRIGGERS表 23.1.17. 其他INFORMATION_SCHEMA表 23.2. SHOW语句的扩展 24. 精度数学 24.1. 数值的类型 24.2. DECIMAL数据类型更改 24.3. 表达式处理 24.4. 四舍五入 24.5. 精度数学示例 25. API和库 25.1. libmysqld,嵌入式MySQL服务器库 25.1.1. 嵌入式MySQL服务器库概述 25.1.2. 使用libmysqld编译程序 25.1.3. 使用嵌入式MySQL服务器时的限制 25.1.4. 与嵌入式服务器一起使用的选项 25.1.5. 嵌入式服务器中尚需完成的事项(TODO) 25.1.6. 嵌入式服务器示例 25.1.7. 嵌入式服务器的许可 25.2. MySQL C API 25.2.1. C API数据类型 25.2.2. C API函数概述 25.2.3. C API函数描述 25.2.4. C API预处理语句 25.2.5. C API预处理语句的数据类型 25.2.6. C API预处理语句函数概述 25.2.7. C API预处理语句函数描述 25.2.8. C API预处理语句方面的问题 25.2.9. 多查询执行的C API处理 25.2.10. 日期和时间值的C API处理 25.2.11. C API线程函数介绍 25.2.12. C API嵌入式服务器函数介绍 25.2.13. 使用C API时的常见问题 25.2.14. 创建客户端程序 25.2.15. 如何生成线程式客户端 25.3. MySQL PHP API 25.3.1. 使用MySQL和PHP的常见问题 25.4. MySQL Perl API 25.5. MySQL C++ API 25.5.1. Borland C++ 25.6. MySQL Python API 25.7. MySQL Tcl API 25.8. MySQL Eiffel Wrapper 25.9. MySQL程序开发实用工具 25.9.1. msql2mysql:转换mSQL程序以用于MySQL 25.9.2. mysql_config:获取编译客户端的编译选项 26. 连接器 26.1. MySQL Connector/ODBC 26.1.1. MyODBC介绍 26.1.2. 关于ODBC和MyODBC的一般信息 26.1.3. 如何安装MyODBC 26.1.4. 在Windows平台上从二进制版本安装MyODBC 26.1.5. I在Unix平台上从二进制版本安装MyODBC 26.1.6. 在Windows平台上从源码版本安装MyODBC 26.1.7. 在Unix平台上从源码版本安装MyODBC 26.1.8. 从BitKeeper开发源码树安装MyODBC 26.1.9. MyODBC配置 26.1.10. 与MyODBC连接相关的事宜 26.1.11. MyODBC和Microsoft Access 26.1.12. MyODBC和Microsoft VBA及ASP 26.1.13. MyODBC和第三方ODBC工具 26.1.14. MyODBC通用功能 26.1.15. 基本的MyODBC应用步骤 26.1.16. MyODBC API引用 26.1.17. MyODBC数据类型 26.1.18. MyODBC错误代码 26.1.19. MyODBC与VB:ADO、DAO和RDO 26.1.20. MyODBC与Microsoft.NET 26.1.21. 感谢 26.2. MySQL Connector/NET 26.2.1. 前言 26.2.2. 下载并安装MySQL Connector/NET 26.2.3. Connector/NET体系结构 26.2.4. 使用MySQL Connector/NET 26.2.5. MySQL Connector/NET变更史 26.3. MySQL Connector/J 26.3.1. 基本的JDBC概念 26.3.2. 安装 Connector/J 26.3.3. JDBC引用 26.3.4. 与J2EE和其他Java框架一起使用 Connector/J 26.3.5. 诊断 Connector/J方面的问题 26.3.6. Changelog 26.4. MySQL Connector/MXJ 26.4.1. 前言 26.4.2. 支持平台: 26.4.3. Junit测试要求 26.4.4. 运行Junit测试 26.4.5. 作为JDBC驱动程序的一部分运行 26.4.6. 在Java对象中运行 26.4.7. MysqldResource API 26.4.8. 在JMX代理(custom)中运行 26.4.9. 部署在标准的JMX代理环境下 (JBoss) 26.4.10. 安装 27. 扩展MySQL 27.1. MySQL内部控件 27.1.1. MySQL线程 27.1.2. MySQL测试套件 27.2. 为MySQL添加新函数 27.2.1. 自定义函数接口的特性 27.2.2. CREATE FUNCTION/DROP FUNCTION语法 27.2.3. 添加新的自定义函数 27.2.4. 添加新的固有函数 27.3. 为MySQL添加新步骤 27.3.1. 步骤分析 27.3.2. 编写步骤 A. 问题和常见错误 A.1. 如何确定导致问题的原因 A.2. 使用MySQL程序时的常见错误 A.2.1. 拒绝访问 A.2.2. 无法连接到[local] MySQL服务器 A.2.3. 客户端不支持鉴定协议 A.2.4. 输入密码时出现密码错误 A.2.5. 主机的host_name被屏蔽 A.2.6. 连接数过多 A.2.7. 内存溢出 A.2.8. MySQL服务器不可用 A.2.9. 信息包过大 A.2.10. 通信错误和失效连接 A.2.11. 表已满 A.2.12. 无法创建文件/写入文件 A.2.13. 命令不同步 A.2.14. 忽略用户 A.2.15. 表tbl_name不存在 A.2.16. 无法初始化字符集 A.2.17. 文件未找到 A.3. 与安装有关的事宜 A.3.1. 与MySQL客户端库的链接问题 A.3.2. 如何以普通用户身份运行MySQL A.3.3. 与文件许可有关的问题 A.4. 与管理有关的事宜 A.4.1. 如何复位根用户密码 A.4.2. 如果MySQL依然崩溃,应作些什么 A.4.3. MySQL处理磁盘满的方式 A.4.4. MySQL将临时文件储存在哪里 A.4.5. 如何保护或更改MySQL套接字文件/tmp/mysql.sock A.4.6. 时区问题 A.5. 与查询有关的事宜 A.5.1. 搜索中的大小写敏感性 A.5.2. 使用DATE列方面的问题 A.5.3. 与NULL值有关的问题
MyICQ 0.8 alpha1测试版 ==================================================== --------------- 1. MyICQ是什么? --------------- MyICQ是一套公开源代码的即时通讯软件,包括服务器端和客户端,可以用于互联网或局域网中。可以运行在Windows或Linux(KDE/Qt)操作系统上,这是Windows版。目前客户端程序的界面完全模仿腾讯的QQ(如果Tencent告我的话,我会马上改的:-)。 总之,如果你崇尚自由,对QQ的越来越多的广告骚扰感到深恶痛绝的话,MyICQ绝对是你很好的选择。 -------- 2. 版本 -------- 这是MyICQ 0.8版本的alpha1 测试版,基本上还没有经过什么严格测试。 -------- 3. 版权 -------- 完全遵循GPL协议2.0或以后协议版本。 --------------- 4. 基本功能特点 --------------- 1) 收发(离线)消息(如果客户端之间能直接通讯,则通过UDP协议发送,否则通过服务器中转) 2) 添加/删除好友(可以设置身份验证) 3) 服务器端存储好友列表 4) 在客户端存储好友资料和聊天记录 5) 客户端与服务器端用DES的密钥加密方式通讯 6) 支持代理服务器(SOCKS5/HTTP) 7) 向在线的一组好友发送消息 8) 系统管理员(MyICQ号 < 1000)可以发送系统广播消息 9) 皮肤系统 10)完全基于插件,使扩展更容易。目前提供的插件有: a. 收发文件 b. 二人世界(可以实时语音聊天) c. 闹钟提醒 ------------------ 5. 分发包里有什么? ------------------ 分发包里有三个目录: myicq/ 客户端程序 myicqd/ 服务器端程序 myicqhttp/ HTTP的转换程序。MyICQ支持HTTP代理,但需要在MyICQ的服务器端运行myicqhttp程序 -------- 6. 安装 -------- 客户端程序不写Windows注册表,无需安装。双击MyICQ.exe运行。 服务器端由于内部采用MySQL数据库,所以安装稍微麻烦一些: 1) 到http://www.mysql.com下载MySQL 2) 打开一个DOS命令窗口,在MySQL中建立一个数据库,并添加一个用户: C:\mysql\bin> mysql -uroot -p ******** (输入root密码,如果还没有设置,直接输入回车即可) mysql> GRANT ALL ON myicq.* TO myicq@localhost IDENTIFIED BY 'myicq'; mysql> CREATE DATABASE myicq; mysql> quit 3) 创建表格: C:\mysql\bin> mysql -umyicq -Dmyicq -p < [myicqd目录]\myicq.sql password: myicq 注意: [myicqd目录]代表myicqd所在的目录 4) 运行myicqd: 双击myicqd.exe即可运行。如果没有错误,应该显示"MyICQ server is now started". 接下来就可以从客户端注册新用户了。 5) 你可能想要添加一个系统用户,以发送系统广播消息: C:\mysql\bin> mysql -umyicq -Dmyicq -p password: myicq mysql> INSERT INTO basic_tbl (uin, passwd) VALUES(100, password('yourpassword')); mysql> INSERT INTO ext_tbl (uin) VALUES(100); 注意: yourpassword代表系统用户的密码 然后选择客户端程序的注册向导,取回100这个号码。完成后,你会发现在主菜单中多了"广播消息"一项。此后,你可以选择个人设定来设定你的个人信息(比如,不允许任何人加我为好友) ------------- 7. 编译源代码 ------------- 如果你是一个程序员,那么一定要编译MyICQ的源代码:-) 1) 到http://www.mysql.com下载MySQL 2) 由于MyICQ在存储好友资料和聊天记录时,使用Berkeley DB库,所以先到 http://www.s

8,028

社区成员

发帖
与我相关
我的任务
社区描述
高性能数据库开发
社区管理员
  • 高性能数据库开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧