• 締切済み

MySQLのfield数の上限について

MySQLでfieldを2916個作ろうと思ったのですが、上限が1000個なのか、1001個目を作ろうとすると下のようなエラーが出ます。 ERROR 1005 (HY000): Can't create table 'features.#sql-1664_18' (errno: 139) featuresというのはデータベース名です。上限をなくす、または大きくする方法があれば教えて下さい。よろしくお願いします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

2916の項目が複合的にすべて連携しあいながら検索・集計する必要があるのでしょうか? ただの履歴でしかないようなデータはまとめてblobで1項目に流し込んでしまうとか 運用の方法でなんとかなるのでは?

amiamiamino
質問者

お礼

ありがとうございます。データを小さくする方法も考えてみます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

データベースエンジンは何をお使いですか? InnoDBであれば、上限1000個 MyISAMであれば、上限4096個 これらはシステム上の制約なので、大きくすることはできません。 ※ただし、MySQLのバージョンで変わる可能性有り。 余談ですが、そんなに項目数が多いと、いろいろ大変ですよ・・・。

amiamiamino
質問者

補足

情報ありがとうございます。MyISAMに変えてみたところ、2410個までは作れたんですが、メモリが足りないのか、それ以上できませんでした。 項目を減らす方法も考えてみようと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

    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) 以上 ちなみに、同一ファイル内に同じ名前のファイルはありませんし、他のデータベースにもありませんでした。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLのエラーで非常に困っています

    rootユーザーからログインし、操作をしますが mysqlの挙動がおかしいです。データベースの作成はできますが、消去の際にエラーが出ます。また、cms等をインストールする際もエラーが頻出します。 mysqlのアップデートもしましたが症状変わりません。 MAMPPではインストールできたので、設定がおかしい可能性が高いと予想しています。 正常にデータベースの作成、消去ができるようにするにはどのように対処すればよろしいでしょうか。 また、ローカルとリモートサーバの設定を比較するにはどうしたらよいでしょうか。 回答をよろしくお願いします。 環境 CentOS6.3 Server version: 5.6.22 MySQL Community Server (GPL) エラー一覧 データベースを消去する際 ERROR 1010 (HY000): Error dropping database (can't rmdir './bs', errno: 39) cmsをインストールする際 エラー: SQLSTATE[HY000]: General error: 1005 Can't create table 'bs.deleteme71431' (errno: -1) 別のcmsでは‥ An exception occurred while executing 'CREATE TABLE PermissionAccessWorkflows (paID INT UNSIGNED DEFAULT 0 NOT NULL, wfID INT UNSIGNED DEFAULT 0 NOT NULL, INDEX wfID (wfID), PRIMARY KEY(paID, wfID)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB': SQLSTATE[HY000]: General error: 1005 Can't create table 'cms_con573_2.PermissionAccessWorkflows' (errno: -1). 同じことを意味しているとは思いますが MySQLエラーログ InnoDB: The file already exists though the corresponding table did not InnoDB: exist in the InnoDB data dictionary. Have you moved InnoDB InnoDB: .ibd files around without using the SQL commands InnoDB: DISCARD TABLESPACE and IMPORT TABLESPACE, or did InnoDB: mysqld crash in the middle of CREATE TABLE? You can InnoDB: resolve the problem by removing the file './cms_con573/PermissionAccessWorkflows.ibd' InnoDB: under the 'datadir' of MySQL. InnoDB: Unable to lock ./cms_con573_2/PermissionAccessWorkflows.ibd, error: 37 141228 2:15:12 InnoDB: Error creating file './cms_con573_2/PermissionAccessWorkflows.ibd'. 141228 2:15:12 InnoDB: Operating system error number 37 in a file operation. InnoDB: Error number 37 means 'No locks available'. InnoDB: Some operating system error numbers are described at InnoDB: ttp://dev.mysql.com/doc/refman/5.5/en/operating-system-error-codes.html

  • MySQL table editorについて

    このエラーについて教えてください! Error while executing query CREATE TABELE 'depot_development','products'( 'id'INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ~~~ ) ENGINE = lnnoDB; MySQL Error Number 1005 Can't create table '.\depot_development\products.frm'(errno: 121)

    • ベストアンサー
    • MySQL
  • MySQLからフィールド名のリストを取り出し、一部のフィールド名を除外したい場合

    PHP + MySQLにて テーブルからフィールド名だけを取得し、さらに一部のフィールド名を除外したいです。 レコードじゃないのでis not構文は使えませんでした。 何かいい方法があれば教えてください。 $sql = "select * from table"; //tableテーブルからフィールド名を取り出し $rs = mysql_query($sql); $fields = mysql_num_fields($rs); $column = array(); for ( $i=0; $i<$fields; $i++ ) { $column[$i] = mysql_field_name($rs, $i); }

    • ベストアンサー
    • MySQL
  • mysqlデータベースリストア

    MySQL初心者です。 基本的な質問ですが、教えてください。 MYSQLデータベースのバックアップは、コマンドラインからmysqldumpでバックアップを行うと思います。 CMD>mysqldump -u(ユーザーグループ) -p(パスワード) (データベース名) > (バックアップファイル名).sql バックアップSQLを使って再度リストアで入れなおす場合は、 drop database (データベース名);と create database (データベース名); を実行してから行う必要があるのでしょうか? (バックアップファイル名).sqlの中身を見てみると、 CREATE TABLE '(テーブル名)' (・・・・ ・・・)の前に DROP TABLE IF EXISTS '(テーブル名)'; のようにテーブルのdropをしてからの処理はあるのですが。

    • ベストアンサー
    • MySQL
  • MySQLのFOREIGN KEYについて

     MySQLのFOREIGN KEYについて質問です。 下記のようにitemテーブルを作ってからarrivalhistoryテーブルを作ろうとすると ERROR 1005 (HY000): Can't create table 'xxx_db.arrivalhistory' (errno: 150) というエラーが出てしまいます。 自分でもForeign keyの作り方等調べてはみたのですが、 上手く解決することができません。 どなたかアドバイス下さい。お願いします。 ・親 create table item ( id bigint not null primary key, itemno VARCHAR(50) ) engine=InnoDB; ・子 create table arrivalhistory( id int primary key, itemno varchar(50), arrivaldate date, index(itemno), foreign key(itemno) references item(itemno) on update cascade on delete cascade ) engine=InnoDB;

    • ベストアンサー
    • MySQL
  • 【至急】さくらサーバーMySQLインポート出来無

    誰か助けて下さい!! さくらインターネットのデータベースで、 MySQLのヴァージョンが低くて、 設置不能のブログ(ワードプレス等)があったので、 ヴァージョンを最新する方法を探していました。 「一回消して再登録する」という記事を読んで、 バックアップも取った上で再登録したのですが、 データをインポートできません。 以前のものは mysql24.db.sakura.ne.jp 今回のは mysql443.db.sakura.ne.jp です。 エクスポートしたデータは「SQL」 「SQL圧縮」「 CSV 」の3つで保存してあります。 再度データベースを作るときにデータベース名を入力する欄がありましたが 以前使っていたものには、そんな入力は要求されなかったような気がします。 もしかしたら、それが原因かも…と思っているのですが、 お分かりになる方いらっしゃいませんでしょうか。 エラーはこちら *-------------------------* エラー 実行した SQL: -- -- データベース: `aaa_01` -- CREATE DATABASE `aaa_01` ; MySQLのメッセージ: #1007 - Can't create database 'aaa_01'; database exists *------------------------------*

  • mysqlのフィールド名

    テーブルを作成しようとしたとき、フィールド名にピリオドが入るとエラーが出ます。 例: Create table tableA ( Idx MEDIUMINT, 0hr DECIMAL(6,2), 1hr DECIMAL(6,2), 1.5hr DECIMAL(6,2), 2hr DECIMAL(6,2) ); ERROR 1060 (42S21) at line 1: Duplicate column name '5hr_1st' フィールド名にピリオドは使えないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLでのフィールドの結合

    こんにちはurudakaraといいます。よろしくお願いします。 私はSQLに関する知識がほとんどありませんがよろしくお願いします。 私はopenofficeをubuntu10.04上で使っています。 業務上データが大量になったためopenofficeについているHSQLというデータベースエンジンでは動作が遅くなったので、データベースエンジンをMySQLに変えました。 するとHSQLでは問題なく結果が出ていたクエリが違う数値を出すようになりました。 まずopenofficeのbaseのテーブルで 識別番号(MySQL Administrator で見るとData Type は VACHAR(50)となってます。) 区分(MySQL Administrator で見るとData Type は DECIMAL(50,0)となってます。) というフィールドがあります。 この状態でopenofficeのクエリのデザイン画面でフィールド欄に "識別番号"+"区分" としてました。 "識別番号1234"+"区分5"の場合  HSQLの場合は結果が 12345 MySQLの場合は結果が 1239 となります。 MySQLでもHSQLの時と同じように結果を出すようにするにはどうSQL文を書けば良いでしょうか? 初心者で分からない事ばかりですが、よろしくお願いします。

    • ベストアンサー
    • MySQL
  • mysql_select_db()関数に関して・・・。MySQLでテーブルの作成ができません。

    こんにちは、さくらインターネットのレンタルサーバでMySQLとphpを連動させたサイトを作っているのですが、初歩的なことでつまずいてしまい困っています。 まず、フォームで入力させたデータをPOSTで受け取り、その受け取ったデータをテーブル名として、データベース上にテーブルをつくりたいのですが、エラー文が表示されるだけでできません。 データベース自体への接続はできているようなのですが、phpMyAdminで見ても全くできていません。SQL文をphpMyAdminで実行するときちんと正常にテーブルができますので、そもそもデータベースが使用できないとか、もしくはSQL文の間違いでもなさそうです。 $t1 = $_POST['test1']; $t2 = $_POST['test2']; echo"{$t1}を受け取りました<br>"; $link = mysql_connect('mysql**.db.sakura.ne.jp', 'ユーザー名', 'パスワード'); if (!$link) { die('接続失敗です。'.mysql_error()); } print('接続に成功しました。<br>'); //1.さくらインターネット内にあるデータベースの選択 $db_name = "自分のデータベース名"; $selectDB = mysql_select_db($db_name,$link) or die("接続できません。"); //2.データベース内にテーブルを作成。 echo"{$t1}がテーブル名になります。<br>"; //3.テーブル作成用SQL文 $str_sql = "CREATE TABLE {$t1}" . "(" . "{$t2} INT(7) NOT NULL," . ");"; //4.上のSQL文を実行してテーブルを作る。 mysql_query($str_sql,$selectDB); echo"データベース内にテーブル「{$t1}」を作成しました。<br>"; //データベースへの接続を切断 $close_flag = mysql_close($link); if ($close_flag){ print('切断しました。<br>'); } 実行結果:Warning: mysql_query(): supplied argument is not a valid MySQL-Link resourceとなってテーブルは作成されず。 自分でも調べて見たところ、mysql_connect()での接続はちゃんとできているようなのですが、その次のmysql_select_db()関数がうまく働いていないようです。 つまりデータベースの選択ができていないので当然エラーとなるようです。 もう何日も悩んでいます。わかる方がいましたらどうぞよろしくお願いします。

    • ベストアンサー
    • PHP
このQ&Aのポイント
  • PT-J100 ラベルライターの電源が正しく入らない問題について相談します。
  • 電池と方向の確認をしてもPT-J100 ラベルライターの電源がつかない状況が続いています。
  • パソコンやスマートフォンのOS、接続方法、関連するソフト・アプリ、電話回線の種類について詳細を教えてください。
回答を見る