1

这个问题是基于这个线程

我跑不成功

sudo mysql 
\. /users/cs/SO_db/posts.sql 

我得到错误

ERROR 1146 (42S02): Table 'personal.posts' doesn't exist

MySQL的手册

五个字符的 SQLSTATE 值 ('42S02')。这些值由 ANSI SQL 和 ODBC 指定,并且更加标准化。并非所有 MySQL 错误编号都映射到 SQLSTATE 错误代码。值“HY000”(一般错误)用于未映射的错误。

错误:1146 SQLSTATE:42S02 (ER_NO_SUCH_TABLE)

消息:表 '%s.%s' 不存在

您如何解决错误消息?

4

5 回答 5

4

您加载的 SQL 脚本引用了数据库中不存在的数据库和/或表。

通常不会使用 调用该mysql工具sudo,因为系统用户权限与 MySQL 用户不同。

要通过 mysql 执行 SQL 脚本,我会尝试类似:

cat somefile.sql | mysql -u <mysqluser> -p <mysqldb>

此命令会将“somefile.sql”加载到工具中,以用户身份mysql连接到 MySQL 服务器并选择数据库。该工具将在执行脚本之前提示输入访问密码。localhost<mysqluser><mysqldb>mysql<mysqluser>

于 2009-07-18T16:38:49.803 回答
2

正如我在您引用的帖子中提到的,您需要先创建表。查看您需要哪些列的 XML 或 SQL 输出。例如,这是一个可以保存 badges.xml 输出的表(我现在没有其他可用的......)

CREATE TABLE `badges` (
  `Id` int(11) NOT NULL default '0',
  `UserId` int(11) not NULL,
  `Date` datetime not  NULL,
  `Name` varchar(32) not NULL,
  PRIMARY KEY  (`Id`),
  KEY `Date` (`Date`),
  KEY `UserId` (`UserId`)
) ;
于 2009-07-18T17:15:49.900 回答
0

您是否真的创建了“个人”数据库​​和“帖子”表?

您可能想尝试以下方法:

mysql -h localhost -u <user> -p<password> -D personal < /users/cs/SO_db/posts.sql
于 2009-07-18T16:37:04.270 回答
0

您的posts.sql 包含一些引用posts 表的语句,该表在您的个人模式中不存在。

要“解决”错误,请确保创建表!

于 2009-07-18T16:37:58.307 回答
0

可能您的 sql 文件不包含“创建表”命令。

于 2009-07-18T16:39:44.250 回答