MySQL5.5.9(RHEL)のSQL文の間違いがわからない

このQ&Aのポイント
  • MySQL5.5.9(RHEL)で以下のSQL文を実行するとエラーが発生しました。エラーメッセージは「#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 'init(10) unsigned NOT NULL, `multi_flag` smallint(6) NOT NULL DEFAULT '1', ' at line 23」と表示されます。
  • SQL文には、「CREATE TABLE IF NOT EXISTS `seo`」というテーブルを作成するコマンドが含まれています。しかし、23行目に構文エラーがあります。
  • 問題のエラーは、23行目のカラムの定義にあります。カラム名は「multi_version」で、データ型は「init(10) unsigned NOT NULL」と指定されていますが、正しい構文ではありません。正しい構文は、例えば「int(10) unsigned NOT NULL」となります。
回答を見る
  • ベストアンサー

以下のSQL文の間違いがわかりません

MySQL5.5.9(RHEL)なのですが、以下のSQL文の間違いがわかりません。 どなたかオシエテいただけませんでしょうか? SQL ================= CREATE TABLE IF NOT EXISTS `seo` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `parentid` bigint(20) unsigned NOT NULL, seq decimal(10,5) unsigned NOT NULL, `urlpath` varchar(64) CHARACTER SET utf8 NOT NULL, `breadcrumbs` varchar(64) CHARACTER SET utf8 NOT NULL, `h1_title` varchar(64) CHARACTER SET utf8 NOT NULL, `keyword1` varchar(128) CHARACTER SET utf8 NOT NULL, `keyword2` varchar(128) CHARACTER SET utf8 NOT NULL, `keyword3` varchar(128) CHARACTER SET utf8 NOT NULL, `description` varchar(128) CHARACTER SET utf8 NOT NULL, `updatetime` datetime NULL, `en_urlpath` varchar(64) CHARACTER SET utf8 NOT NULL, `en_breadcrumbs` varchar(64) CHARACTER SET utf8 NOT NULL, `en_h1_title` varchar(64) CHARACTER SET utf8 NOT NULL, `en_keyword1` varchar(128) CHARACTER SET utf8 NOT NULL, `en_keyword2` varchar(128) CHARACTER SET utf8 NOT NULL, `en_keyword3` varchar(128) CHARACTER SET utf8 NOT NULL, `en_description` varchar(128) CHARACTER SET utf8 NOT NULL, `en_updatetime` datetime NULL, `multi_version` init(10) unsigned NOT NULL, `multi_flag` smallint(6) NOT NULL DEFAULT '1', `multi_memo` text CHARACTER SET utf8, UNIQUE KEY `id` (`id`), UNIQUE KEY `urlpath` (`urlpath`), UNIQUE KEY `h1_title` (`h1_title`), UNIQUE KEY `keywords` (`keyword1`,`keyword2`,`keyword3`) UNIQUE KEY `description` (`description`) UNIQUE KEY `en_urlpath` (`en_urlpath`), UNIQUE KEY `en_h1_title` (`en_h1_title`), UNIQUE KEY `en_keywords` (`en_keyword1`,`en_keyword2`,`en_keyword3`) UNIQUE KEY `description` (`en_description`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ======================================== エラーメッセージ(phpmyadmin) #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 'init(10) unsigned NOT NULL, `multi_flag` smallint(6) NOT NULL DEFAULT '1', ' at line 23 ===== よろしくお願いします。

  • MySQL
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

>`multi_version` init(10) unsigned NOT NULL, init(10)ではなくint(10)では

goo_mygwdisk_3
質問者

お礼

ありがとうございます。動きました! ちなみに、かんまいわすれと重複キーと、keyが1000ばいと をこえてるという ミスまでありました・・・^^; ありがとうございました。

関連するQ&A

  • tableをつくれない

    CREATE TABLE `db31_dev`.`db31_dev` ( `keyword_id` SERIAL NOT NULL , `bc_guid` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `bc_wbs` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `keyword_h1_url` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `keyword_wording_in_bc` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `keywords` VARCHAR( 511 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `description` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `last_modified` DATETIME NOT NULL , `changefreq` VARCHAR( 15 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `pri` INT( 5 ) NOT NULL , `noLocalNavi` BOOLEAN NOT NULL , PRIMARY KEY ( `keyword_id` ) , UNIQUE ( `bc_guid` , `bc_wbs` , `keyword_h1_url` , `keywords` , `description` ) ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci; とphpmyadminでうったら(正確にはテキストボックスに入力) priの部分がエラーと言われて、 MySQLのメッセージ: ドキュメント #1071 - Specified key was too long; max key length is 767 bytes だそうです。 どうすればいいのでしょうか? よろしくお願い申し上げます。

    • ベストアンサー
    • MySQL
  • sql文について

    phpとmysqlの参考書を購入したのですがわからないことがあり 質問させてください。 参考書のサンプルとしてsample.sqlには以下の内容があります。 CREATE TABLE IF NOT EXISTS `author` ( `author_id` int(11) NOT NULL auto_increment, `author_name` varchar(255) NOT NULL default '', `author_name_kana` varchar(255) NOT NULL default '', `state` int(11) NOT NULL default '0', `description` text NOT NULL, PRIMARY KEY (`author_id`), KEY `author_name` (`author_name`), KEY `author_name_kana` (`author_name_kana`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; PRIMARY KEY (`author_id`),まではわかるのですがそれ以下の KEY ・・・とはなんのためにあり何をするのでしょうか? PRIMARY KEY・・・は主キーをauthor_idにするという設定かと 思うのですがKEY ・・・について意味がわかりません。 基本的すぎる事なのか参考書に説明がありませんでした^^; 詳しい方おりましたらわかりやすく教えて頂けますと幸いです。 宜しくお願い致します。

  • SQLのSELECT文について

    以下の注文テーブルで、注文件数と送料と注文合計金額を一度に取得する場合、以下のようなSQL文で合っていますか? "SELECT order.total, order.delivery_fee, SUM(order.total * order.tax) AS total_for_paying FROM order"; CREATE TABLE `order` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `status` tinyint(3) UNSIGNED NOT NULL DEFAULT '0', `order_payment_status` tinyint(3) UNSIGNED NOT NULL DEFAULT '0', `buyer_id` bigint(20) UNSIGNED NOT NULL, `discount` INT(11) UNSIGNED NOT NULL, `delivery_fee` INT(11) UNSIGNED NOT NULL, `charge` INT(11) UNSIGNED NOT NULL, `total` INT(11) UNSIGNED NOT NULL, `tax` INT(11) UNSIGNED NOT NULL, `total_with_tax` INT(11) UNSIGNED NOT NULL, `total_for_paying` INT(11) UNSIGNED NOT NULL, `use_point` INT(11) UNSIGNED NOT NULL, `created` DATETIME NOT NULL, `updated` DATETIME NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

    • ベストアンサー
    • MySQL
  • SQL文を入力したらエラー

     phpMyAdminで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 varchar(20) default ' ', mail varchar(40) default ' ', course varchar(30) default ' ', nums integer default 0, PRIMARY KEY (book_id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;  以上SQLに入力した文ですが!  以下のエラーが出て先に進みません。   エラー 実行した SQL: CREATE DATABASE xmas; → (http://dev.mysql.com/doc/refman/5.5/en/create-database.htmlにリンクされている) 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) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;   以上ですが、何が原因で進めないか原因を追及中です。  最近SQLを始めたので、全く見当がつきません。 皆様よろしくお願いします。  

    • ベストアンサー
    • MySQL
  • Data too long for column 'id' at row 1とエラー

    MySQLを3.27から2.0に変えたのですが、 Data too long for column 'id' at row 1 というエラーが表示されて困っています。 エラー 実行した SQL: ALTER TABLE `account` CHANGE `id` `id` VARCHAR( 3 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , CHANGE `pass` `pass` VARCHAR( 3 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , CHANGE `mail` `mail` VARCHAR( 16 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , CHANGE `name` `name` VARCHAR( 6 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , CHANGE `host` `host` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL MySQLのメッセージ: #1406 - Data too long for column 'id' at row 1 いきなりでどう対処していいか困っています。 どこを変更すればよいのでしょうか・・・?

  • SQL文でダブルクォートか

    SQL文でダブルクォートかアポストロフィーか迷っています!?  以下のSQL文の  name varchar(30) not null default " ,等の  最後から2番目に " ダブルクォートがあります。  教本を見ながら入力したのですが、' ' アポストロフィーが2個あるようにも見えます。 この場合、どちらが正規でしょうか!    以下問題のSQL文です。  よろしくお願いします。 CREATE DATABASE xmas; USE xmas; 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) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    • ベストアンサー
    • MySQL
  • ALTER TABLE文の書き方について

    お世話になります。 今、以下のような列からなるテーブルがあります。 ・A(主キー) ・B(主キー) ・C(主キー) ・D(主キー) ・E(NOT NULL) ・F 列A、B、C、Dが複数列の組み合わせで主キーです。 このテーブルを以下のように変更したい場合、 どのようなALTER TABLE文を書けばできますでしょうか。 ※列A、B、C、Dの主キーはやめて、列A、B、C、D、G、H、Iの  複数列によるUNIQUE制約を設定。 ・A(UNIQUE&NOT NULL)← 主キーはやめる ・B(UNIQUE&NOT NULL)← 主キーはやめる ・C(UNIQUE&NOT NULL)← 主キーはやめる ・D(UNIQUE&NOT NULL)← 主キーはやめる ・E(NOT NULL) ・F ・G(UNIQUE)← 追加 ・H(UNIQUE)← 追加 ・I(UNIQUE)← 追加 やりたいことは、列G、H、Iを追加して、 A、B、C、D、G、H、IでUNIQUEにしたく、かつ、 追加したG、H、IはNULLを許容したいということです。 A、B、C、D、G、H、Iの複数列の組み合わせで主キーも 考えましたが、主キーにするとNULLが許容できないと いうことで、上記のようなレイアウトを考えました。 他に上手い方法があればご教授いただけると幸いです。 ちなみに列のデータ型はすべて可変長の文字列です。

  • SQLにプログラムが反映されないのは何故

    XAMPP Version: 1.8.2 です。   Xamsのデータベースをデータベースから削除した後  SQLから、以下2個プログラムを入力しました。  すると、削除したにも関わらず、エラーが出て プログラムが反映されません。  Xamsを削除後、再起動したらまたXamsのデータベースが 再構築されます。  私は作成した記憶はありません。  すでに存在しているので、作成しする必要は ないのか、よくわかりません!?  皆様どう思われますか!?  以下入力したプログラムです。 ---------------------------------------------------------------- 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) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; エラー 実行したSQL: DATABASEクリスマスを作成します。 のMySQLのメッセージ:ドキュメント #1007 - データベース'クリスマス'を作成できません、データベースが存在している -------------------------------------------------- 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 KEY (book_id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; エラー 実行したSQL: TABLE xmastranを(CREATE book_idのINT NOT NULL AUTO_INCREMENT、 名VARCHAR(30)NOT NULL DEFAULT''を、 orgのVARCHAR(50)NOT NULL DEFAULT''を、 addrはVARCHAR(80)NOT NULL DEFAULT''を、 電話VARCHAR(20)DEFAULT''を、 メールVARCHAR(40)DEFAULT''を、 もちろんVARCHAR(30)DEFAULT''を、 numsはINTEGERのデフォルトは0、 PRIMARY KEY(book_id) )ENGINE = MYISAM DEFAULT CHARSET= utf8を; のMySQLのメッセージ:ドキュメント #1050 - テーブル 'xmastran'は既に存在します。 ------------------------------------------------------------------- 以上よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQL文について

    SQLite バージョン3.7.10 を使用しています。 次のようなテーブル構造で、 PRAGMA foreign_keys = ON; CREATE TABLE t1 ( key TEXT PRIMARY KEY NOT NULL, name TEXT NOT NULL UNIQUE ); INSERT INTO t1 (key, name) VALUES ('t1_key1', 't1_name1'); INSERT INTO t1 (key, name) VALUES ('t1_key2', 't1_name2'); CREATE TABLE t2 ( key TEXT PRIMARY KEY NOT NULL, name TEXT NOT NULL UNIQUE ); INSERT INTO t2 (key, name) VALUES ('t2_key1', 't2_name1'); INSERT INTO t2 (key, name) VALUES ('t2_key2', 't2_name2'); CREATE TABLE t3 ( key TEXT PRIMARY KEY NOT NULL, name TEXT NOT NULL UNIQUE ); INSERT INTO t3 (key, name) VALUES ('t3_key1', 't3_name1'); INSERT INTO t3 (key, name) VALUES ('t3_key2', 't3_name2'); CREATE TABLE t4 ( year TEXT NOT NULL, t1_key TEXT NOT NULL, t3_key TEXT NOT NULL, percent INTEGER NOT NULL, UNIQUE(year, t1_key, t3_key), FOREIGN KEY(t1_key) REFERENCES t1(key) ON DELETE CASCADE, FOREIGN KEY(t3_key) REFERENCES t3(key) ON DELETE CASCADE ); INSERT INTO t4 (year, t1_key, t3_key, percent) VALUES ('2011', 't1_key1', 't3_key1', 10); INSERT INTO t4 (year, t1_key, t3_key, percent) VALUES ('2012', 't1_key2', 't3_key2', 50); INSERT INTO t4 (year, t1_key, t3_key, percent) VALUES ('2012', 't1_key2', 't3_key1', 100); CREATE TABLE t5 ( no INTEGER PRIMARY KEY AUTOINCREMENT, date TEXT NOT NULL, t1_key TEXT NOT NULL, t2_key TEXT NOT NULL, t3_key TEXT NOT NULL, amount INTEGER NOT NULL, FOREIGN KEY(t1_key) REFERENCES t1(key) ON DELETE CASCADE, FOREIGN KEY(t2_key) REFERENCES t2(key) ON DELETE CASCADE, FOREIGN KEY(t3_key) REFERENCES t3(key) ON DELETE CASCADE ); INSERT INTO t5 (date, t1_key, t2_key, t3_key, amount) VALUES ('2011-01-01', 't1_key1', 't2_key1', 't3_key1', 3000); INSERT INTO t5 (date, t1_key, t2_key, t3_key, amount) VALUES ('2011-02-02', 't1_key2', 't2_key1', 't3_key1', 2000); INSERT INTO t5 (date, t1_key, t2_key, t3_key, amount) VALUES ('2012-01-01', 't1_key2', 't2_key1', 't3_key1', 5000); 例えばテーブル「t5」から、 dateカラム=’2011’ t1_keyカラム= (テーブル「t1」のt1_nameカラム=’t1_name1’のt1_key1) t2_keyカラム= (テーブル「t2」のt2_nameカラム=’t2_name1’のt2_key1) という条件の含まれてる全ての対応する行に、 テーブル「t4」のpercentカラムとテーブル「t5」のamountカラムを 掛け合わせた数値の合計を出力する。 ただしテーブル「t4」に対応するt1_keyとt3_keyがなければ、 percentを「0」としてamountと掛ける。 例えばこの条件だと '2011-01-01'と'2011-02-02'の2つの行のamountの合計を求めることになりますが、 '2011-01-01'の方は、テーブル「t4」にpercent「10」があるので 3000×(10/100)=300 '2011-02-02'の方は、テーブル「t4」にpercentがない(対応する行がない)ので 2000×(0/100)=0 合計 300+0=300 という結果が得たいです。 これはどのようなSQL文になるのでしょうか?

  • エラーになってしまうCREATE文

    MySQL 5.0.21(Win版)を導入してみたのですが、 http://hotwired.goo.ne.jp/webmonkey/2000/01/index2a_page5.html にある下記のSQL文を「MySQL Command Line Client」から実行すると CREATE TABLE employees ( id tinyint(4) DEFAULT '0' NOT NULL AUTO_INCREMENT, first varchar(20), last varchar(20), address varchar(255), position varchar(50), PRIMARY KEY (id), UNIQUE id (id)); を実行すると、 mysql> CREATE TABLE employees ( id tinyint(4) DEFAULT '0' NOT NULL AUTO_INCREMEN T, first varchar(20), last varchar(20), address varchar(255), position varchar(5 0), PRIMARY KEY (id), UNIQUE id (id)); ERROR 1067 (42000): Invalid default value for 'id' mysql> とエラーになってしまいます。なぜでしょうか?

    • ベストアンサー
    • MySQL