• 締切済み

BLOB項目追加後のInsert実行エラーとデータサイズ変更方法

環境はMYSQL 5.0です。 既存のテーブルでたとえば **************************** ○Aテーブル  No INT(5)  Name VARCHAR(5) **************************** 上記のようなテーブルが存在しており、そこに MySQL Query Browserなどのツールを使用し 追加でMEDIUMBLOB型の項目を追加しました。 **************************** ○変更後Aテーブル  No INT(5)  Name VARCHAR(5)  Image MEDIUMBLOB **************************** その後、PG(VB2008)よりjpg画像ファイル登録するため INSERTするとエラーが発生してしまいます。 エラー内容は 「ERROR 1064: You have an error in your SQL syntax. Check the manual that corresp onds to your MySQL server version for the right syntax to use near (ここは文字化け) at line 1」 といった感じです。 INSERT実行自体には問題がないため、 一度MYSQL5.0をアンインストール、再インストール後に初めからBLOB型を含んだAテーブルCREATEを行い 再度同じようにPG実行でINSERTによるjpg画像の登録を行ったら 正常登録されました。 このことよりおそらくMYSQLの既存のデータサイズ設定?に問題が あるのかなぁと思っています。 そこで質問なのですが、MYSQLのアンインストールなど行わずに 既存のままテーブルにBLOB型を追加し、データサイズ(Data Length?)を変更する方法をご存じの方いらっしゃいますでしょうか? また、原因自体違う!というのがありましたらご指摘いただきたいです。 複数の場所でこのBLOB追加作業が必要になってきており、困っております。 よろしくお願いいたします。

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

みんなの回答

回答No.1

>環境はMYSQL 5.0です。 MySQL 5.0の後の番号(MySQL 5.0.xxのxx)は、何でしょうか? >追加でMEDIUMBLOB型の項目を追加しました。 MySQLは、列の追加位置を指定できますが、一番最後に追加したのでしょうか? >「ERROR 1064: You have an error in your SQL syntax. Check the ~中略~ >といった感じです。 >INSERT実行自体には問題がないため、 発生したエラーは、SQLの構文エラーと言われています。 「INSERT実行自体には問題がない」とは、どういう意味でしょうか? >一度MYSQL5.0をアンインストール、再インストール後に初めからBLOB型を >含んだAテーブルCREATEを行い >再度同じようにPG実行でINSERTによるjpg画像の登録を行った なぜ、アンインストール&再インストールをすることにしたのでしょうか?そういった作業が必要と思わせる、何らかのメッセージやマニュアル記述があったのでしょうか? 再インストールの前後で、MySQLの設定は、何か違っているのでしょうか? 提示された内容からだけでは、どこまでが事実確認できていて、どの部分が推測or試行錯誤の中で結果的に解決したのか、といったことが判断できません。

kei161220
質問者

補足

バージョンはMySQL 5.0.22 -community-nt via TCP/IP です。 >MySQLは、列の追加位置を指定できますが、一番最後に追加したのでしょうか? そうです。列の最後です。 >発生したエラーは、SQLの構文エラーと言われています。 「INSERT実行自体には問題がない」とは、どういう意味でしょうか? 例でいうAテーブルへINSERT実行は正常にできたという意味です。 (BLOB追加前) >なぜ、アンインストール&再インストールをすることにしたのでしょうか? エラーメッセージを元に、サイトである程度原因を探しましたが 特に特定できるものはなく、そのなかで再インストールしたら できたというものがありましたので試してみました。 >再インストールの前後で、MySQLの設定は、何か違っているのでしょうか? 記載のとおり、BLOB型項目を追加したことが違っているだけで他は何も変えていません。 流れでいうと (1)AテーブルへデータのINSERT正常登録(BLOB追加前) (2)テーブルへ画像ファイルを登録したいため、  AテーブルへBLOB項目追加 (3)PGで画像のDB登録処理を追加し、実行した際エラー (4)エラーをもとに原因調査したが特定できず  テーブルのバックアップ(BLOB入り)をとった後MySQLアンインストール (5)MySQLを再インストールし、バックアップデータを復元 (6) 再度(3)のPGを実行したら正常登録 という流れです。 再インストールにより上手くいっただけで確かなえらーの原因が特定できていません。 ですので、今回BLOB追加により何か他に設定が必要なのかどうかを 知りたいと思っております。 よろしくお願いします。

関連するQ&A

  • ID番号を指定して、行にデータを追加する方法は?

    +------+----------+----------------+----------+ | id | name | address | hobby | +------+----------+----------------+----------+ | 1 | 武田信玄 | 山梨県甲府市 | NULL | | 2 | 毛利元就 | 広島県広島市 | NULL | +------+----------+----------------+----------+ というテーブルがあります。 カラムhobby[int型]にデータを追加するため、 mysql> insert into BUSHOU(hobby) values('2'),('1'); とすると、 +------+----------+----------------+----------+ | id | name | address | hobby | +------+----------+----------------+----------+ | 1 | 武田信玄 | 山梨県甲府市 | NULL | | 2 | 毛利元就 | 広島県広島市 | NULL | | NULL | NULL | NULL | 2 | | NULL | NULL | NULL | 1 | +------+----------+----------------+----------+ となってしまいます。 mysql> insert into BUSHO(hobby) where id 1 values('2'); とするとsyntaxエラーになります。 カラムhobby[int型]にデータを追加するためには、どうすれば良いのでしょうか?

    • ベストアンサー
    • MySQL
  • テーブル作成でカラム名で配列を

    MySQLを勉強している初心者です、よろしくお願いします。 テーブル作成時、カラム名を配列を使ってできないものでしょうか? (data1 data2 data3 data4 とするのが面倒なのですが) CREATE TABLE table_name ( code int(6) , data1[100] int(10) , data2[50] varchar(20) , data3[20] varchar(25)); ERROR 1064:You have an error in your SQL syntax. となります。 また二次元配列はどのようにしたらよいのでしょうか? よろしくお願いします。

  • insertを用いてテーブルにレコードを追加することができるのにもかか

    insertを用いてテーブルにレコードを追加することができるのにもかかわらず、load data infile を用いるとerror1366と表示されてしまいます。解決方法を教えてください。 Windows7 mysqlは最新版を使っています。 インストールしたそのままの状態だと、insertを用いて日本語を挿入しようとするとerror 1366と出てしまってましたが、my.iniを書き換えることによってinsert table1 values (1,'ああ');といった操作でエラーが出ることはなくなりました。 しかしcsvファイルをload data infileを用いてインポートしようとすると、またerror 1366が出てしまいました。 インポートしようとしたファイルには日本語が書かれています。 英字だけのファイルを同様にインポートすると、エラーは出ませんでした。 <table1> id int(15) name varchar(255) 1,a 2,b 3,asdf … はインポート可能 。また insert table1 values (1,'あ'); も正常に動作。 1,あ 2,い … をインポートするとエラー。 これができないと先に進めません・・・ ご教授お願いします。

  • MySQL insert文に関するエラーについて

    ○質問の主旨 MySQLのデータベースにテーブルを作ってinsert文で データを追加しようとするとシンタックスエラーが出ます。 SQL文が間違っているのかと思いGoogle検索や本で調べたりしましたが、 なぜ文法エラーが発生するのか分かりません。 エラーと対処方法をご存知の方がいらっしゃいましたらご教示願います。 ○質問の補足 // usersテーブル create table users ( id int not null auto_increment primary key, created datetime not null, modified datetime not null, username varchar(255), password varchar(40) ); desc users; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | created | datetime | NO | | NULL | | | modified | datetime | NO | | NULL | | | username | varchar(255) | YES | | NULL | | | password | varchar(40) | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+ insert into users (created, modified, username, password) values (now(), now(), 'test1', 'test1'), (now(), now(), 'test2', 'test2') ); ERROR 1064 (42000): 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 ')' at line 3

    • ベストアンサー
    • MySQL
  • PHPでMySQLのMEDIUMBLOB型のデータを取り出す

    初めまして、宜しくお願いします。 現在ユーザ登録の管理をするデータベースを扱っています。 言語はPHP4と、MySQLを使用しています。 そのデータベースには、アイコン画像、登録者名、性別、 掲示板発言回数などのユーザー情報が保存されており、 データ型[MEDIUMBLOB]にまとめて保存されているようです。 (データベースは私が作成したものではいのですが) なのでそこから、それらの情報を取り出したいのですが、 [MEDIUMBLOB]型のデータの取り出し方が解らず困っています。 具体的にはデータだけならば取り出す事はできるものの、 バイナリ形式なので当然文字化けしているという感じです。 勉強不足ということは百も承知ですが、検索しても それらしい情報を見つけることもできず、ご存じの方が おられないかとこちらにて質問をさせていただきました。 お解りの方がおられましたらどうかアドバイスを 宜しくお願い致します。 -------------------------- // 以下のようなテーブルにデータが格納されていた場合 CREATE TABLE sample(   test_i INT,   test_s VARCHAR(64),   medium MEDIUMBLOB ); // 格納されているデータを取り出す $res = mysql_query( "SELECT test_i, medium FROM sample;" ); while( $list = mysql_fetch_assoc( $res ) ){   echo "$list['test_i']<br>";  //echo "$list['medium']<br>"; } 上記の通りをMEDIUMBLOB型ですると文字化けします。

    • ベストアンサー
    • PHP
  • BLOBデーターの画像の表示方法を教えてください。

    php(4.3)とmysql(4.0)を使って、BLOBに格納した画像を表示させたいです。 テーブル:gazou 画像名:aa.gif | id |   images    | | ̄ ̄| ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄ | 1 | [BLOB-2.9KB] | ↑ PHPMYADMINでデーターを作って、画面にはこのように表示されています。 <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=EUC-JP”> </head> <body> <?php $conn = mysql_connect("localhost","user","pass"); mysql_select_db(test); $self = basename($_SERVER['PHP_SELF']); $sql = " SELECT * FROM gazou "; $rst = mysql_query($sql,$conn); while($row=mysql_fetch_array($rst)){ print"<img src='{$self}?id=$row[id]'>"; } ?> </body> </html> 本やネットで自分なりに調べた結果、これで画像が表示されるはず(!?)だと思っているのですが、残念ながら、画像は×になって表示されません。 初歩的な質問ですみませんが、どうすれば画像は表示されるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPMyAdminを使ってインサートすると・・。

    最近MySQL5.0.22を使い始めました。 PHPMyAdminを使って手入力でテーブルにデータをインサートしようとすると、#1292のエラーメッセージが出ます。 日付やINTのカラムにデータを入れずにインサートしようとするとこのエラーが出ます。 以前MySQL4.0を使っていた時にはこういった現象はなかったのですが、どのように回避すれば良いのでしょうか?

    • ベストアンサー
    • MySQL
  • insertでのエラーについて

    お世話になります。 アップロードしたバイナリデータを変数に入れて、それをinsertしているのですが、DBに入りません。 テーブルでは、data mediumblob not nullと設定しています。Perlスクリプト内で、次のように書いています。 $sql="insert into data_tbl(data)"; $sql.="values('" . $datafile . "')"; 上記の$datafileにバイナリデータが入っています。 このようにして実行しているのですが、You have an error in your SQL syntax. とエラーになりDBに格納できません。ご教授よろしくお願いします。

  • phpでのSQLでのデータの追加方法

    phpでのSQL実行に関して、下記のデータを追加するコードがあります。 mysql_query('INSERT INTO my_items SET maker_id=1, item_name="もも", price=210, keyword="缶詰,ピンク,甘い", sales=0, created="2010-08-01", modified="2010-08-01"') or die(mysql_error()); echo 'データを挿入しました'; 私は。それを INSERT INTO (フィールド名) VALUES(値) のSQL文で実行したいのですが、その方法が分かりません。 よろしければ、それを実行するコードを教えてください。お願いします。

    • ベストアンサー
    • PHP
  • PHP+MYSQLの画像の書き込み

    PHPでMYSQLにblob型へJPGを格納したいのですが、<INPUT type="file" name="file">でPOSTしたのを insert文で$_POST['file']で書き込んでもMYSQLのテーブルを見ても書き込まれていません。 base64でエンコードしないとだめなのでしょうか? 簡単なサンプルが知りたいです。

    • 締切済み
    • PHP