1

この質問はこのスレッドに基づいています。

実行に失敗しました

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

エラーが発生します

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

MySQLのマニュアルには

5文字のSQLSTATE値( '42S02')。値はANSISQLおよびODBCによって指定され、より標準化されています。すべてのMySQLエラー番号がSQLSTATEエラーコードにマップされているわけではありません。値'HY000'(一般エラー)は、マップされていないエラーに使用されます。

エラー:1146 SQLSTATE:42S02(ER_NO_SUCH_TABLE)

メッセージ:テーブル'%s。%s'は存在しません

エラーメッセージをどのように解決できますか?

4

5 に答える 5

4

ロードしたSQLスクリプトは、データベースまたはデータベースに存在しないテーブル、あるいはその両方を参照します。

システムユーザー権限はMySQLユーザーとは異なるため、通常は、を使用してmysqlツールを呼び出すことはありません。sudo

mysqlを介してSQLスクリプトを実行するには、次のようにします。

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

このコマンドは、「somefile.sql」をmysqlツールにロードしlocalhost、ユーザーとしてMySQLサーバーに接続し<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

データベース「personal」とテーブル「posts」を実際に作成しましたか?

次のようなものを試してみてください。

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

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

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

于 2009-07-18T16:37:58.307 に答える
0

おそらく、SQLファイルに「createtable」コマンドが含まれていません。

于 2009-07-18T16:39:44.250 に答える