人に聞けない痔の悩み、これでスッキリ >>

原因が分からず困っております。

SQLITEで
SELECT * from zip limit 5;

だと表示されるのですが
SELECT zip7 from zip limit 5;

のようにcolumnを指定すると表示されません。

エラーも出ないし空白が5行出ているので、プログラム自体は動いているようなのですが・・・。

※SELECT zip6 from zip limit 5;
のように存在しないcolumnを指定するときっちりエラーが出ています。

環境はCENTOS+SQLITE2+poderosa
コマンドラインで実行しています。

宜しくお願いします。

「sqlite select 表示されない」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (2件)

たぶん、#1さんの指摘通りだと思うのですが。



select文実行前に、列名をヘッダ出力&表示カラム位置を合わせる指定をしてみてください。

.header on
.mode column

そうすれば、列に期待した通り値が入っているか、確認できると思います。
    • good
    • 0

画像を見る限りSELECT zip7 from zip limit 5;を実行した後に空行が表示されているようですし


zip7というカラムは存在するけど全ての行でNULLか空欄なのではないでしょうか。

この回答への補足

ご回答ありがとうございます。
カラム名は下記のとおりになります。

sqlite> .schema zip
CREATE TABLE zip(
pubcode INT -- 全国地方公共団体コード
,zip5 CHAR(5) -- (旧)郵便番号(5桁)
,zip7 CHAR(7) -- 郵便番号(7桁)
,pref_k TEXT -- 都道府県名カナ
,city_k TEXT -- 市区町村名カナ
,town_k TEXT -- 町域名カナ
,pref_j TEXT -- 都道府県名
,city_j TEXT -- 市区町村名
,town_j TEXT -- 町域名
);
sqlite> select * from zip limit 5;
13101100 1000000トウキョウトチヨダクイカニケイサイガナイバアイ東京都千代田区以下に掲載がない場合000000||||||||
13101102 1020072トウキョウトチヨダクイイダバシ東京都千代田区飯田橋001000||||||||
13101102 1020082トウキョウトチヨダクイチバンチョウ東京都千代田区一番町000000||||||||
13101101 1010032トウキョウトチヨダクイワモトチョウ東京都千代田区岩本町001000||||||||
13101101 1010047トウキョウトチヨダクウチカンダ東京都千代田区内神田001000||||||||
sqlite> select zip7 from zip limit 5;





sqlite>

補足日時:2011/06/01 20:53
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

QSQliteの日付検索について

SQliteの日付検索について教えてください。
現在、SQLiteでデータベースを作成しています。
日付で範囲を選択してデーターを抽出したいのですが、方法がよく分かりません。
(例:2011-08-20から2011-08-27までの日にち分のデータを抜き出したい)
どなたか教えてください。
ちなみにデータベースにはDATE型でdateのcolumに”2011-08-20”という風に保存してあります。

Aベストアンサー

SELECT * FROM テーブル名 WHERE date >= '2011-08-20' AND date <= '2011-08-27'
SELECT * FROM テーブル名 WHERE date BETWEEN '2011-08-20' AND '2011-08-27'

とかでどうでしょうか。


SQLite はDATE型で定義しても、実体は文字列(TEXT型)に
なっているのだと以前聞いたことがあります。

QSQLiteファイルへの同時アクセス過多によるロックについて

PHP5.0+SQLite2.8でユーザー投稿型のサイトを個人運営しています。
1日数万ページビューほどの規模で、
データベースのテーブルのレコード数は数万件、
1レコードあたりのカラム数は数十件ほどあり、
そのテーブルに1日数百件の投稿があります。
それらのデータは随時更新・削除・検索されます。

データベースファイルへのINSERT、UPDATE、DELETE、SELECTなどが重なると
「database is locked」とのエラーメッセージが表示され、
それからもずっとユーザーによるデータベースへのアクセスが続くため、
データベースへのアクセスがしづらい、
もしくはまったくできない状態が延々と続いてしまいます。

SQLiteではトランザクション中にファイル全体がロックされるため
こうした現象が発生するようですが、
この状態を元に戻す方法はないのでしょうか?
ファイルをいったん削除してアップロードしなおすと直るのですが、
ファイルのアップロードには時間がかかるため、
他にいい応急措置の方法がないものかと悩んでいます。

それから、そもそもこの規模のサイトでデータベースを運用するには
SQLiteでは限界があるのでしょうか?
仮に他のデータベースに乗り換えるとしたら、
こうした頻繁に書き込み・更新・削除などが行われるサイトでは
どのデータベースを利用すべきでしょうか?
それともこの程度の規模であれば、
スクリプトを改善することでSQLiteでも対応可能なレベルでしょうか?

なにぶんデータベースに触れて間もないもので知識不足ですが、
どなたか詳しい方にご教授いただければ幸いです。

PHP5.0+SQLite2.8でユーザー投稿型のサイトを個人運営しています。
1日数万ページビューほどの規模で、
データベースのテーブルのレコード数は数万件、
1レコードあたりのカラム数は数十件ほどあり、
そのテーブルに1日数百件の投稿があります。
それらのデータは随時更新・削除・検索されます。

データベースファイルへのINSERT、UPDATE、DELETE、SELECTなどが重なると
「database is locked」とのエラーメッセージが表示され、
それからもずっとユーザーによるデータベースへのアクセスが続くため、
...続きを読む

Aベストアンサー

そのような現象を確認したことがないので推測ですが・・・

たぶんSQLiteの限界と思います。
御自身で推測しているように「ファイル全体がロック・・・」は間違っていないと思います。 SQLiteの対極にあると思われるOracleが作業領域自体を複数のファイルで運用する理由のひとつが、このような現象を回避するためと推測できます。 SQLiteは、他のdbでは存在するdbエンジンと呼ばれるサービス( デーモン )が処理するのではなく、SQLite.exe自体が処理を行っているので複数のクライアントからのリクエストが重複した場合の処理が非力だと考えられます。

また、別の原因として考えられるのはWebサーバーのファイル・ロック機能との競合が考えられます。 これは私も経験している問題で、回避策はSQLiteからMySQLへのdb変更でした。 使用しているWebサーバーでは、SQLiteのロック以外に、単純にファイルがロックされる現象が、時々発生し、Webサーバーの管理者からはロック回避手段はないとの回答が来たのでSQLite -> MySQL 以外に選択の余地が無かったのですが、MySQLに変更して以来 db関連のロックされる現象は発生していないので SQLite の限界と理解しています( ファイルのロックは依然として時々発生しているので )。
ただ、別な回避策として、Webサーバーが管理していない領域にdbを設定する方法があるのですが、管理ツールの関係で移動できないので、本当に回避策なるかは確認していないです。

 なお、PHPでコーディングされているなら「PDO」でdbを操作していますか? もし、PDOで操作しているならdbへの接続文の1行を変更することでdbを変更できるので、開発はSQLite、実運用はMySQLという開発が可能なのでPDOによる記述をお勧めします。

そのような現象を確認したことがないので推測ですが・・・

たぶんSQLiteの限界と思います。
御自身で推測しているように「ファイル全体がロック・・・」は間違っていないと思います。 SQLiteの対極にあると思われるOracleが作業領域自体を複数のファイルで運用する理由のひとつが、このような現象を回避するためと推測できます。 SQLiteは、他のdbでは存在するdbエンジンと呼ばれるサービス( デーモン )が処理するのではなく、SQLite.exe自体が処理を行っているので複数のクライアントからのリクエストが...続きを読む


人気Q&Aランキング