2009-07-18 53 views
1

此问题是基于this thread在MySQL中运行.sql文件

我运行不成功

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

我得到的错误

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

MySQL's manual

A five-character SQLSTATE value ('42S02'). The values are specified by ANSI SQL and ODBC and are more standardized. Not all MySQL error numbers are mapped to SQLSTATE error codes. The value 'HY000' (general error) is used for unmapped errors.

Error: 1146 SQLSTATE: 42S02 (ER_NO_SUCH_TABLE)

Message: Table '%s.%s' doesn't exist

如何解决错误信息?

+1

你究竟在做什么? – 2009-07-18 16:36:33

+0

我想把SO的用户数据放在.xml -form中。 – 2009-07-18 19:08:24

回答

2

正如我在你引用的文章中提到的,你需要先创建表格。 查看您需要的列上的XML或SQL输出。例如这里是一张可以保存badge.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`) 
) ; 
0

你真的创建了数据库'个人'和表'职位'?

你可能想尝试这样的:

mysql -h localhost -u <user> -p<password> -D personal < /users/cs/SO_db/posts.sql 
0

你posts.sql包含一些语句引用的帖子表,它不会在您的个人模式存在。

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

3

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

通常人们不会拨打mysql工具sudo,因为系统用户权限与MySQL用户不同。

要通过MySQL的执行SQL脚本,我会尝试这样的:

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

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

0

可能你的sql文件不包含“create table”命令。