1064 CREATE TABLEのエラー... TYPE = MYISAM -- mysql フィールド と syntax フィールド 関連 問題

1064 error in CREATE TABLE … TYPE=MYISAM












32
vote

問題

日本語

これは私のエラーです(あなたがそれ以上尋ねるだけで必要な場合) - エラー SQLクエリ:

<事前> <コード> module List = let divideAt predicate list = let rec divideAt' acc = function | [] -> (List.rev acc, []) | h::_ as ls when predicate h -> (List.rev acc, ls) | h::t -> divideAt' (h::acc) t divideAt' [] list 7

MySQLは言った:

1064 - SQL構文にエラーがあります。使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。 6行目の 'type = myisam'近く

英語

Here is my error(if you need any more info just ask)- Error SQL query:

CREATE TABLE dave_bannedwords(  id INT( 11 ) NOT NULL AUTO_INCREMENT , word VARCHAR( 60 ) NOT NULL DEFAULT  '', PRIMARY KEY ( id ) , KEY id( id ) ) TYPE = MYISAM ; 

MySQL said:

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 'TYPE=MyISAM' at line 6

</div
     
 
 

回答リスト

74
 
vote
vote
ベストアンサー
 

<コード>


古い TYPE オプションは ENGINE と同義です。 <コード> TYPE はMySQL 4.0では非推奨で、MySQL 5.5で削除されました。 MySQL 5.5以降にアップグレードするときは、 TYPE に依存する既存のアプリケーションを代わりに ENGINE を使用する必要があります。

したがって、

<事前> <コード> CREATE TABLE dave_bannedwords( id INT(11) NOT NULL AUTO_INCREMENT, word VARCHAR(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY id(id) -- this is superfluous in the presence of your PK, ergo unnecessary ) ENGINE = MyISAM ;
 

As documented under CREATE TABLE Syntax:

Note
The older TYPE option was synonymous with ENGINE. TYPE was deprecated in MySQL 4.0 and removed in MySQL 5.5. When upgrading to MySQL 5.5 or later, you must convert existing applications that rely on TYPE to use ENGINE instead.

Therefore, you want:

CREATE TABLE dave_bannedwords(   id   INT(11)     NOT NULL AUTO_INCREMENT,   word VARCHAR(60) NOT NULL DEFAULT '',   PRIMARY KEY (id),   KEY id(id) -- this is superfluous in the presence of your PK, ergo unnecessary ) ENGINE = MyISAM ; 
</div
 
 
       
       
0
 
vote

補完的な注意事項 CREATE TABLE .. TYPE="" SQLダンプファイルの

の<コード> CREATE TABLE .. TYPE="" 構文

TLDR:サードパーティ製のツールによって生成されたSQLダンプファイルで CREATE TABLE ... TYPE="..." ステートメントを入手している場合、それは最も確かにサーバーがデフォルトの<コード> CREATE TABLE2 を使用するように設定されていることを示します。 <コード> MYSQL40 または<コード> MYSQL323 。

長い話

他のものと言われているように、 TYPE CREATE TABLE の引数は、MySQLで長時間推奨されています。 <コード> mysqldump --compatible=mysql40 --compatible=mysql40 を使用して、 ENGINE 引数を正しく使用します。 CREATE TABLE ... TYPE="..."0 最大5.7)。

しかし、多くの外部SQL Dump Tools(たとえば、PhpMyAdmin、Navicat、DbVisualizerなどのMySQLクライアントに統合されたもの、およびIcontrolWPなどの外部自動バックアップサービスによって使用されるもの)は、この変更を特に認識していません。代わりに、 998877611 コマンドに依存して各テーブルのテーブル作成ステートメントを提供します(そしてそれはそれを明確にするために:これは実際には良いことです)。ただし、 CREATE TABLE ... TYPE="..."4 変数が CREATE TABLE15 CREATE TABLE ... TYPE="..."2 は実際には時代遅れの構文を作成します。 >または<コード> CREATE TABLE16 。

そのため、サードパーティ製ツールによって生成されたSQLダンプファイルで CREATE TABLE ... TYPE="..."7 ステートメントが入手している場合、サーバーがデフォルトの<コード> CREATE TABLE ... TYPE="..."8 を使用するように設定されていることを最も確実に示します。 <コード> CREATE TABLE ... TYPE="..."9 または<コード> sqlmode0 。

これらの sqlmode1 sは基本的にいくつかの後方互換の動作を保持するためにMySQLを設定し、それらをデフォルトで使用すると、数年前にほとんど推奨されていました。しかし、あなたがまだこれらのモードなしで正しく機能しないコードがまだあることは非常にありそうです。とにかく、 sqlmode2 、<コード> CREATE TABLE23 と他の複数の 998876624 sは推奨されていて、MySQL 8.0以降ではサポートされていません。

これらの sqlmode5 sでまだ設定されている場合は、これらを変更した場合にいくつかのレガシープログラムが失敗する可能性があると心配している場合は、<コード> sqlmode6 を1つ設定することです。そのプログラムのローカルには、接続直後に sqlmode7 を実行します。これは一時的なパッチとしてのみ考慮されるべきであり、MySQL 8.0以降では機能しません。

SQLクエリの書き換えを伴わないより将来の証明ソリューションは、どの互換性機能を有効にする必要があるかを正確に決定し、プログラムごとに(前述のように)、それらだけを有効にすることです。デフォルトの sqlmode8 (つまり、サーバーの構成で)は、理想的には設定されていない(現在のバージョンの公式MySQLのデフォルトを使用します)。 sqlmode9 の全リスト(MySQL 5.7の時点)について説明します。 https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

 

A complementary note about CREATE TABLE .. TYPE="" syntax in SQL dump files

TLDR: If you still get CREATE TABLE ... TYPE="..." statements in SQL dump files generated by third party tools, it most certainly indicates that your server is configured to use a default sqlmode of MYSQL40 or MYSQL323.

Long story

As it was said by others, the TYPE argument to CREATE TABLE has been deprecated for a long time in MySQL. mysqldump correctly uses the ENGINE argument, unless you specifically ask it to generate a backward compatible dump (for example using --compatible=mysql40 in versions of mysqldump up to 5.7).

However, many external SQL dump tools (for example, those integrated in MySQL clients such as phpmyadmin, Navicat and DBVisualizer, as well as those used by external automated backup services such as iControlWP) are not specifically aware of this change, and instead rely on the SHOW CREATE TABLE ... command to provide table creation statements for each tables (and just to it make it clear: this is actually a good thing). However, the SHOW CREATE TABLE will actually produce outdated syntax, including the TYPE argument, if the sqlmode variable is set to MYSQL40 or MYSQL323.

Therefore, if you still get CREATE TABLE ... TYPE="..." statements in SQL dump files generated by third party tools, it most certainly indicates that your server is configured to use a default sqlmode of MYSQL40 or MYSQL323.

These sqlmodes basically configure MySQL to retain some backward compatible behaviours, and using them by default was largely recommended a few years ago. It is however highly improbable that you still have any code that wouldn't work correctly without these modes. Anyway, MYSQL40, MYSQL323 and several other similar sqlmodes have themselves been deprecated and are not supported in MySQL 8.0 and higher.

If your server is still configured with these sqlmodes and you are worried that some legacy program might fail if you change these, then one possibility is to set the sqlmode locally for that program, by executing SET SESSION sql_mode = 'MYSQL40'; immediately after connection. Note that this should only be considered as a temporary patch, and will not work in MySQL 8.0 and higher.

A more future-proof solution that do not involve rewriting your SQL queries would be to determine exactly which compatibility features need to be enable, and to enable only those, on a per-program basis (as described previously). The default sqlmode (that is, in server's configuration) should ideally be left unset (which will use official MySQL defaults for your current version). The full list of sqlmode (as of MySQL 5.7) is described here: https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html.

</div
 
 
-2
 
vote
<事前> <コード> MYSQL400
 
CREATE TABLE `admnih` (   `id` int(255) NOT NULL auto_increment,   `asim` varchar(255) NOT NULL default '',   `brid` varchar(255) NOT NULL default '',   `rwtbah` int(1) NOT NULL default '0',   `esmmwkeh` varchar(255) NOT NULL default '',   `mrwr` varchar(255) NOT NULL default '',   `tid` int(255) NOT NULL default '0',   `alksmfialdlil` int(255) NOT NULL default '0',   `tariktsjil` varchar(255) NOT NULL default '',   `aimwke` varchar(255) NOT NULL default '',   `twkie` text NOT NULL,   `rwtbahkasah` int(255) NOT NULL default '0',   PRIMARY KEY  (`id`) ) TYPE=MyISAM AUTO_INCREMENT=2 ; 
</div
 
 
 
 
-2
 
vote
<事前> <コード> SELECT Email, COUNT(*) FROM user_log WHILE Email IS NOT NULL GROUP BY Email HAVING COUNT(*) > 1 ORDER BY UpdateDate DESC

MySQLは言った:ドキュメント#1064 - あなたはあなたのSQLにエラーがあります 構文; MySQLサーバーのバージョンに対応するマニュアルを確認してください 36行目の「type = Myisam」の近くで使用するための正しい構文のために


どの補正を下回る:

<事前> <コード> CREATE TABLE users_online ( ip varchar(15) NOT NULL default '', time int(11) default NULL, PRIMARY KEY (ip), UNIQUE KEY id (ip), KEY id_2 (ip) TYPE=MyISAM; ) # # Data untuk tabel `users_online` # INSERT INTO users_online VALUES ('127.0.0.1', 1158666872);
 
SELECT Email, COUNT(*) FROM user_log     WHILE Email IS NOT NULL     GROUP BY Email     HAVING COUNT(*) > 1     ORDER BY UpdateDate DESC  

MySQL said: Documentation #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 'TYPE=MyISAM' at line 36


Which correction below:

CREATE TABLE users_online (   ip varchar(15) NOT NULL default '',   time int(11) default NULL,   PRIMARY KEY  (ip),   UNIQUE KEY id (ip),   KEY id_2 (ip)   TYPE=MyISAM; ) #                            # Data untuk tabel `users_online` #  INSERT INTO users_online VALUES ('127.0.0.1', 1158666872); 
</div
 
 
 
 
-2
 
vote

下記のクエリを試してください

<事前> <コード> CREATE TABLE card_types ( card_type_id int(11) NOT NULL auto_increment, name varchar(50) NOT NULL default '', PRIMARY KEY (card_type_id), ) ENGINE = MyISAM ;
 

Try the below query

CREATE TABLE card_types (   card_type_id int(11) NOT NULL auto_increment,   name varchar(50) NOT NULL default '',   PRIMARY KEY  (card_type_id), ) ENGINE = MyISAM ; 
</div
 
 
 
 

関連する質問

394  PrintFを使用して符号なしLong Long Intをフォーマットするにはどうすればよいですか。  ( How do you format an unsigned long long int using printf ) 
<事前> <コード> #include <stdio.h> int main() { unsigned long long int num = 285212672; //FYI: fits in 29 bits int normalInt = ...

5  `using`ディレクティブの場所はC#に違いを生じさせますか?  ( Does the location of the using directive make a difference in c ) 
今日は既存のコードへのフォーマットをやろうとしている間にエラーが発生しました。もともと、コードにはネームスペースの外で宣言されている using ディレクティブがありました: <事前> <コード> using System.Collections.Generi...

109  Javaの単一と二重引用符の違いはありますか?  ( Is there a difference between single and double quotes in java ) 
Javaの単一引用符と二重引用符の差はありますか? ...

0  Yojimboのメモアイテムの「コンテンツ」を取得できないのはなぜですか?が「コンテンツ」を取得できますか?  ( Why cant i retrieve contents of a note item in yojimbo but i can retrieve th ) 
YojimboのAppleScript辞書のメモアイテムは次のように定義されています。 <事前> <コード> note item n [inh. database item] : A note item. elements contained by ap...

7  C ++でのデフォルトの逆基準セマンティクス[閉じた]  ( Default pass by reference semantics in c ) 
現在立つにつれて、この質問は私たちのQ&AMPにとって良いフィットではありません。フォーマット。私たちは事実、参考文献、または専門知識によって支持されることを期待していますが、この質問は...

370  Pythonでバイナリリテラルをどのように表現しますか?  ( How do you express binary literals in python ) 
Pythonリテラルを使用したバイナリ番号として整数を表現しますか? 私はヘクスの答えを見つけることができました: <事前> <コード> >>> 0x12AF 4783 >>> 0x100 256 と8進: <事前> <コード> >>> 01267 69...

1  条件付き順序  ( Conditional orderby ) 
それで、今、私はユーザーが並べ替えることができる数の列を持っています(名前、郡、active)、そしてそれは簡単だが乱雑です。このように見えます... <事前> <コード> Select Case e.SortExpression ...

3  ASP.NET vs asp.net MVC  ( Asp net vs asp net mvc ) 
今こそ、テクノロジーズのどちらが優れているのは質問ではありません。 私の質問は2つの構文に関するものです。構文の違いはどのように異なりますか? ...

687  ダブルまたはシングルブラケット、括弧、カーリーブレースの使用方法  ( How to use double or single brackets parentheses curly braces ) 
私は、括弧内の括弧、括弧、巻き毛の括弧、およびそれらの二重または単一の形の違いによって混乱しています。明確な説明はありますか? ...

7  JavaScript言語とjQueryの$  ( Javascript language and the in jquery ) 
私は疑問に思いました、$の方法はいかがですか。 $ .ajax({...})。仕事?私には意味がありません。メンバーとしてのajaxは意味がありますが、$は変数名ですか?またはそれは?どのように定義されていますか? ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有