2009-07-18 2 views
1

この質問は、this threadに基づいています。MySQLで.sql-fileを実行するには

私は

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

正確に何をしようとしていますか? –

+0

SOのユーザーデータを.xml -form形式でMySQLに入力しようとしています。 –

答えて

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`) 
) ; 
+0

ありがとうございました! --- mysql db_name output.file'でMySQLのマニュアルに従ってSQLコマンドを実行することができます。 –

+0

MyQSLデータベース 'test'にテーブル' badges'があります。 ** http://stackoverflow.com/questions/1146470/to-read-sos-data-dump-effectively/1147259#1147259でPythonコードを実行すると、データを直接MySQLデータベースに挿入するようにできます。今のところテキストファイルですか?** –

+0

あなたはこの "python importscript.pyバッジ"を実行します。xml | mysql test " ユーザ名/パスワードなどを指定する必要がある場合は、mysqlコマンドに他の引数が必要な場合があります。 – nos

0

あなたは実際にデータベース「個人用」とテーブル「投稿」を作成しましたか?

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

あなたposts.sqlはあなたの個人的なスキーマに存在しないポストのテーブルを、参照するいくつかのステートメントが含まれています

あなたのような何かをしようとする場合があります。

エラーを「解決」するには、テーブルが作成されていることを確認してください。

3

読み込んだSQLスクリプトは、データベースに存在しないデータベースやテーブルを参照します。

通常、システムユーザ権限はMySQLユーザとは異なるため、ツールをsudoと呼ぶことはありません。このコマンドは、ユーザー<mysqluser>としてlocalhost上のMySQLサーバに接続し、選択し、mysqlツールに「somefile.sql」をロードし

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

は、私のような何かをしようとmysqlのを介してSQLスクリプトを実行するにはデータベース <mysqldb>mysqlツールは、スクリプトを実行する前に <mysqluser>のアクセスパスワードの入力を求めます。

0

あなたのSQLファイルにはおそらく "create table"コマンドが含まれていません。