- ベストアンサー
phpMyAdminのSQL文実行エラー
- phpMyAdminを使用してSQL文を実行する際に発生するエラーについて質問しています。
- 具体的には、データベースの作成に関するエラーメッセージが表示されているため、解決策を求めています。
- 初心者であるため、教本やネットでの情報収集が必要であると感じており、代替となる手順を教えてほしいと思っています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
いやだから「タイプミスが3件ありました」と書いたでしょ? >tel verchar(20 default '', vercharじゃなくvarchar、かっこが閉じてない >PRIMARY KEP (book_id) KEPじゃなくKEY 文法(シンタックス)エラーの原因は大半がタイプミスです
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
>CREATE DATABASE xmas; を CREATE DATABASE if not exists xmas; に変更してください ようはすでにその名前のデータベースがあるなら作らないってことです 同じようにテーブルの作成も CREATE TABLE if not exists xmastran ( ・・・ とした方がよいでしょう ちなみに例示されたcreate table文にタイプミスが3件ありました よくよく注意された方がよろしいかと
補足
御回答まことに有難うございます。 CREATE DATABASE xmas;を CREATE TABLE if not exists xmastran に変更したところ以下のエラーが出ました。 エラー 実行した SQL: CREATE TABLE xmastran( book_id INT NOT NULL AUTO_INCREMENT , name VARCHAR( 30 ) NOT NULL DEFAULT '', org VARCHAR( 50 ) NOT NULL DEFAULT '', addr VARCHAR( 80 ) NOT NULL DEFAULT '', tel VARCHAR( 20 ) DEFAULT '', mail VARCHAR( 40 ) DEFAULT '', course VARCHAR( 30 ) DEFAULT '', nums INTEGER DEFAULT 0, PRIMARY KEP( book_id ) ) ENGINE = MYISAM DEFAULT CHARSET = utf8; MySQL のメッセージ: ドキュメント #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'KEP (book_id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8' at line 10 サーバ "127.0.0.1" 上でクエリを実行する: ドキュメント CREATE DATABASE if not exists xmas; USE xmas; CREATE TABLE xmastran ( book_id int not null auto_increment, name varchar(30) not null default '' , org varchar(50) not null default '', addr varchar(80) not null default'', tel varchar(20) default '', mail varchar(40) default '', course varchar(30) default '', nums integer default 0, PRIMARY KEP (book_id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
えーと、過去の回答者様と同じ回答しかできませんが できるかわりrませんが、解説してやってみます。 まず、どんなデータベースエンジン(mySQL,Orcal,SQLServer,Postgres)も 同一のデータベース名は使えません。 構造としては、データベースエンジン→データーベース→テーブルや何やら という形です。 データベースエンジン | |----xmas |__xmas2 のようにデーターベースが格納されています。 で、その中で同一のDB名は使えません。 猫や犬を複数飼って全員「タロウ」っていったらわけわからなくなりません?それと同じです。PC側がどれのこっちゃとなるのです。 では、前回の質問を書いたSQL文を細かく見ると CREATE DATABASE xmas; USE xmas; CREATE TABLE xmastran ( book_id int not null auto_increment, name varchar(30) not null default '' , org varchar(50) not null default '', addr varchar(80) not null default'', tel verchar(20 default '', mail varchar(40) default '', course varchar(30) default '', nums integer default 0, PRIMARY KEP (book_id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; となっています。 最初の CREATE DATABASE xmas; これは[xmas]データベースを作成しろという命令です。 そのまま続けて USE xmas; xmasデータベースを対象に操作をするとPC側に宣言します。 で、残りの部分 CREATE TABLE xmastran これは[xmastran]というテーブルを作れという命令です。(上記のxmasを操作すると宣言してるので) と考えれば、方法は二つあります。一つは同一のDBが作れないんですから 上記の文から[CREATE DATABASE xmas;]を消して[Use~]からはじめる もう一つは、前回回答者様seastar3様がお書きになった DROP DATABASE xmas 意味はデーターベースを削除するです(空にすると削除するでは大きく意味が違います。これは自分でしらべてください) を実行し、一度[xmas]DBを削除してから再度[CREATE DATABASE xmas;]を実行するかです。 その後の操作では、上記と同じく[CREATE DATABASE xmas;]は必要ありません。 わかりづらいかと思いますが、がんばってください。
補足
有難うございました。
補足
有難うございます。 3か所ミスを修正しましたが、結果は同じでした。 エラー 実行した SQL: CREATE DATABASE xmas; MySQL のメッセージ: ドキュメント #1007 - Can't create database 'xmas'; database exists サーバ "127.0.0.1" 上でクエリを実行する: ドキュメント CREATE DATABASE xmas; USE xmas; CREATE TABLE xmastran ( book_id int not null auto_increment, name varchar(30) not null default '' , org varchar(50) not null default '', addr varchar(80) not null default'', tel varchar(20) default '', mail varchar(40) default '', course varchar(30) default '', nums integer default 0, PRIMARY KEY (book_id)