プロが教える店舗&オフィスのセキュリティ対策術

MySQLにおいてバッチ処理でデータベースを構築する際のトラブル

MySQLに関しては素人です。
バッチ処理でデータベースを構築したいとおもって、バッチを指示通りの場所において、
net start mysql と打って、それから、
mysql -u root -p SampleDB040 < "C:\mysql\data\sampledb040\ファイル名.sql"
として、パスワードを入れて、データベースを構築したいと思ったのですが、エラーが出て出来ません。
このエラーをどうすれば解消できるのか教えてください。

以下のようなメッセージが出ています。

ERROR 1005 (HY000) at line 10: Can't create table 'sampleDB040.t01prefecture' (errno: 121)

以上

ちなみに、同一ファイル内に同じ名前のファイルはありませんし、他のデータベースにもありませんでした。

よろしくお願いします。

A 回答 (6件)

-pの後ろのスペースを抜いてみてはどうでしょう?

    • good
    • 0
この回答へのお礼

解答ありがとうございます。
-pを抜くと、エラーが出ました。
以下のような文でした。

ERROR 1045 (28000): Access denied for user 'root'@'localhost'(using password: YES)

お礼日時:2010/03/29 15:26

>-pを抜く



いえ、-pの後ろのスペースです。

mysql -u root -pSampleDB040 < "C:\mysql\data\sampledb040\ファイル名.sql"

という感じ?
    • good
    • 0
この回答へのお礼

解答ありがとうございます。

前回のお礼の際のコメントが間違っていました。すみません。
-pを抜いたのではなくて、-pの後ろのスペースを抜いて試しました。
それで、以下のような文が出てきました。

ERROR 1045 (28000): Access denied for user 'root'@'localhost'(using password: YES)

お礼日時:2010/03/30 14:26

もしそうであれば、localhostからrootでアクセスする権限が


ないように見受けられます。
コンソールからrootでアクセスできますか?

mysql -u root -p
で、ログインできますか?

もしできないなら逆にどういうログインならできるのでしょうか?
ログインできるならmysqlデータベースのuserテーブルに
Host=localhostのUser=rootの設定をしてみてください
    • good
    • 0
この回答へのお礼

mysql -u root -p からのログインは出来ます。

すみません、この文章の意味がよくわからないのですが・・・。
「ログインできるならmysqlデータベースのuserテーブルに
Host=localhostのUser=rootの設定をしてみてください」

お礼日時:2010/03/30 21:59

手順


mysql -u root -p からログイン
use mysql
INSERT INTO `user` VALUES (
'localhost', 'hoge', PASSWORD( 'hogehoge' ) , 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '0', '0', '0', '0'
) \g
flush privileges \g

みたいな感じで・・・
    • good
    • 0
この回答へのお礼

解答ありがとうございます。

INSERT INTO `user` VALUES (
'localhost', 'hoge', PASSWORD( 'hogehoge' ) , 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '0', '0', '0', '0'
) \g
が入りません。エラーの文章は以下です。

ERROR 1136 (21S01): Column count doesn't match value count at row 1

お礼日時:2010/03/31 11:12

> Column count doesn't match



バージョンや状況によって若干フィールドの数がちがうようですね。
INSERT INTO `user`(`Host`,`User`,`Password`)
VALUES (
'localhost', 'hoge', PASSWORD( 'hogehoge' )
)

してから、必要な権限をlocalのhogeに対して付加してください。
    • good
    • 0
この回答へのお礼

解答ありがとうございます。
rootでデータベースに入ってから、

INSERT INTO `user`(`Host`,`User`,`Password`)
VALUES (
'localhost', 'hoge', PASSWORD( 'hogehoge' )
);

以上を入力したんですが、エラーが出ます。以下エラー文です。

ERROR 1064 (42000): You have an error in syntax: check the manual that
corresponds to your MySQL server version for the right syntax to use near 'INSER
T INTO `user`(`Host`,`User`,`Password`)
VALUES (
'localhost','hoge',PASSW' at line 4

お礼日時:2010/03/31 19:10

>);



全角のセミコロンになっていませんか?
あやしければ\gでやってみてください。
    • good
    • 0
この回答へのお礼

解答ありがとうございます。
全角になってたみたいです。\gでうまくいったように思います。
ですが、さらにエラーが出ました。データベースには入っています。

ERROR 1146 (42S02): Table 'sample040.user' doesn't exist

お礼日時:2010/04/01 10:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!