0

为了优化系统性能,我们在 RAM 上存储了一些静态表(它们的副本也存在于硬盘驱动器上——在 MyISAM 上)。现在,众所周知,当服务器重新启动时,RAM 上的所有数据都会被删除。因此,为了避免我们创建了一个包含 4 个 SQL 语句的 init 文件。

请注意,每条 SQL 语句都位于单独的行中,以分号 (;) 结尾,并且任何地方都没有注释 --- 因此,根据我有限的知识,我相信我已经避免了一些基本错误。但是,当我从命令行手动重新启动 MySQL 进行测试时,我看到内存表是空的。初始化文件本身没有问题,因为当我从命令行手动执行初始化文件时,数据被填充而没有任何问题。

在解决此问题方面的任何帮助将不胜感激!

谢谢!

乌达扬

4

2 回答 2

0

这有些不对劲。

只是为了检查,我尝试使用 /etc/init.d/mysql restart 重新启动我的本地 mysql 服务器。并且,它由 mysql 用户(不是 root)启动。

因此,我们将需要以下内容来尝试解决这个问题,因为我几乎可以肯定问题是文件具有错误的权限,或者它位于运行 mysqld 的用户无权访问的位置。

  • 你运行的是什么版本的 Linux?
  • 您安装的 mySQL 版本是多少?
  • 'init-file=' 在 my.cnf 的右侧部分吗?
  • 'ps -ef | 的输出是什么?grep mysqld'?
  • 'ls -lrt /tmp/initfile.sql' 的输出是什么?
  • 'initfile 本身没有问题,因为当我从命令行手动执行 initfile 时,数据被填充而没有任何问题。'是什么意思?

我不禁认为这是一个权限问题。所以第四和第五个答案是我最感兴趣的。

您应该将所有这些答案添加到您的问题中 - 以便人们拥有帮助您解决问题所需的一切。

于 2012-08-07T13:27:19.117 回答
0

感谢您的所有建议,但我已经弄清楚了问题所在。

  1. 在 SQL 文件中,我需要提及该初始化文件应该填充哪个数据库。

  2. 我在 SQL 语句中有尾随分号——显然这不是一个好主意。

一旦我做了这两个小改动,一切都开始正常了。

再次感谢指点!

乌达扬

于 2012-08-09T05:19:34.423 回答