数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
InnoDB 中文参考手册 --- 3 建立一个 InnoDB 数据库

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

InnoDB 中文参考手册 --- 犬犬(心帆)翻译

3 建立一个 InnoDB 数据库

假设你已经安装了 MySQL 并且已经修改了 my.cnf 包含了必要的 InnoDB 参数设置 。在启动 MySQL 之前必须检查为InnoDB 指定的数据与日志文件路径是否存在以及在 这些目录上有足够的权限。InnoDB 不会自己建立目录,只能建立文件。同时检查是否有足够的磁盘空间存放数据与日志文件。

当创建一个 InnoDB 数据库时最好以命令行方式来运行 MySQL 服务 mysqld ,而不是从 safe_mysqld 或 Windows 服务。当从命令行方式运行服务时可以看到建立过程。

现在运行 MySQL 服务,InnoDB 将建立数据文件和日志文件。InnoDB 将显示下列所示的信息:

heikki@donna:~/mysql-3.23.48/sql> mysqld
 020204 23:17:12  InnoDB: The first specified data file /dr2/tmp/heikki/data/ibdata1
 did not exist:
 InnoDB: a new database to be created!
 InnoDB: Setting file /dr2/tmp/heikki/data/ibdata1 size to 20 MB
 InnoDB: Database physically writes the file full: wait...
 020204 23:17:16  InnoDB: Data file /dr2/tmp/heikki/data/ibdata2 did not exist: new
 to be created
 InnoDB: Setting file /dr2/tmp/heikki/data/ibdata2 size to 200 MB
 InnoDB: Database physically writes the file full: wait...
 020204 23:17:41  InnoDB: Data file /dr2/tmp/heikki/data/ibdata3 did not exist: new
 to be created
 InnoDB: Setting file /dr2/tmp/heikki/data/ibdata3 size to 1000 MB
 InnoDB: Database physically writes the file full: wait...
 020204 23:21:37  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
 InnoDB: Setting log file ./ib_logfile0 size to 10 MB
 InnoDB: Database physically writes the file full: wait...
 020204 23:21:39  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
 InnoDB: Setting log file ./ib_logfile1 size to 10 MB
 InnoDB: Database physically writes the file full: wait...
 020204 23:21:41  InnoDB: Log file ./ib_logfile2 did not exist: new to be created
 InnoDB: Setting log file ./ib_logfile2 size to 10 MB
 InnoDB: Database physically writes the file full: wait...
 InnoDB: Doublewrite buffer not found: creating new
 InnoDB: Doublewrite buffer created
 InnoDB: Creating foreign key constraint system tables
 InnoDB: Foreign key constraint system tables created
 020204 23:21:45  InnoDB: Started
 mysqld: ready for connections
 

现在一个新的 InnoDB 数据库被建立了。你可以通过 MySQL 的客户端程序(比如 mysql)连接 MySQL 服务器。当通过 mysqladmin shutdown 关闭 MySQL 服务时,InnoDB 输出如下所示:

020204 23:34:45  mysqld: Normal shutdown
 
 020204 23:34:45  InnoDB: Starting shutdown...
 020204 23:34:47  InnoDB: Shutdown completed
 020204 23:34:47  mysqld: Shutdown Complete
 

现在你可以看到数据文件与日志文件已被建立。在日志文件目录下也会包含一个句为 ib_arch_log_0000000000 的小文件。这是当 InnoDB 的日志存档(log archiving)开关关闭后,数据库建立后形成的文件。 当 MySQL 再次启动时,屏幕显示所下所示:

heikki@donna:~/mysql-3.23.48/sql> mysqld
 020204 23:34:27  InnoDB: Started
 mysqld: ready for connections
 

3.1 在建立数据库时可能发生的几个错误

如果 InnoDB 显示一个文件操作的操作系统错误,请查看第 13.2 节 错误代码的含义。常见的错误如下:

  • 没有创建 InnoDB 数据或日志文件目录。
  • mysqld 在那些目录下没有建立文件的权限。
  • mysqld 没有权限读取 my.cnf my.ini 文件,因而无法配置所指定的选项。
  • 磁盘空间已满或超过磁盘配额。
  • 建立了一个与数据文件同名的子目录。
  • innodb_data_home_dir innodb_data_file_path 中设置语法出错。

如果在 InnoDB 数据库创建时发生了一个错误,你必须删除所有 InnoDB 创建的文件。 这就意味着所有的数据文件、所有的日志文件、日志存档文件,如果你已经建立了一些 InnoDB 表,必须删除 MySQL 数据目录下相应的 “.frm”文件。然后可以再尝试建立 InnoDB 数据库。最好以命令行方式启动 MySQL 服务,从而可以看到建立过程。

3.2 关闭 MySQL 服务

通常在关闭计算机之前你必须先关闭数据库服务。在命令行方式下输入 mysqladmin shutdown 可以以服务。

在 Windows NT 和 2000 下可以将 MySQL 服务安装为 Windows 系统服务。这样在计算机启动时 MySQL 服务会自动启动或在命令行方式下输入 MS-DOS 命令 NET START MySQL 或从操作系统的服务菜单中启动。

如果以系统服务方式运行 MySQL,可以通过 MS-DOS的 NET STOP MySQL 命令或操作系统的服务菜单中关闭服务。你同样可以让操作系统退出前自动关闭 MySQL。在低于 MySQL 3.23.47 版本的系统中,Windows 操作系统仅仅只等待一段时间让 InnoDB 完全关闭,如果限止时间超过将杀死数据服务线程。那在下一次 InnoDB 启动不得不不进行一个崩溃修复。从 MySQL version 3.23.48 开始,操作系统将等待 InnoDB 完全关闭。

如果你的操作系统没有为 InnoDB 完全关闭提供足够的时间,最安全的办法就是在 MS-DOS 命令行下运行 MySQL 服务,并用 mysqladmin shutdown 关闭服务。

在 Windows NT (但 Windows 2000 无些问题)下,当计算机关闭时,有一个可能发生的问题就是 Windows NT 默认等待 20 秒以关闭一个服务,服务未能关闭将杀死服务线程。可以通过运行注册表编辑器 \winnt\system32\regedt32.exe 来修改 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control 中的 WaitToKillServiceTimeout 键值以增加这个默认值。以毫秒为单位给定一个更大的值。

 




相关文章

相关软件