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

ERROR: 現在のトランザクションがアボートしました。トランザクションブロックが終わるまでコマンドは無視されます
実行するとこのようなエラーが出ますが、どのようにすれば解決できるでしょうか?

A 回答 (1件)

例:idを重複させた


「エラー:重複キーが一意性制約account_ id_key に違反しています」→「エラー:現在のトランザクションがアボートしました。トランザクションブロックが終わるまでコマンドは無視されます」

(トランザクション内でSQL文がエラーとなった場合、後続のSQL文は全て、無条件にエラーとなり、コミットを実行しても、実際には ロールバックされる)
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QPostgreSQLが起動しない・・・

はじめまして、tanu_2です。
玄箱HGをDebian化し、いろいろと遊んでいます。

PostgreSQLをapt-getでインストールし、Webアプリを動かしていたのですが、昨日より突然、PostgreSQLが動かなくなってしまいました。
原因が分からず、サーバを再起動し、
# /etc/init.d/postgresql start

$ pg_ctl start
などを試してみたのですが、動きません。
念のため、初期化(initdb)も試みたのですが、これも失敗してしまいます。
/var/log/postgresql/postgres/logを覗いてみると、

FATAL: could not write lock file "/var/lib/postgres/data/postmaster.pid": No space

となっており、上記ディレクトリにpostmaster.pid書き込みできないよ、と言われているっぽかったので、パーミッションを変更したりして
みましたが、postgresql startにしろ、pg_ctl startにしろ、それぞれのコマンドで起動すると、強制的にパーミッションが「700」に変更されてしまうようで、結果は同じでした。

どなたか、解決策をご教示願えませんでしょうか?

よろしくお願いします。m(_ _)m

はじめまして、tanu_2です。
玄箱HGをDebian化し、いろいろと遊んでいます。

PostgreSQLをapt-getでインストールし、Webアプリを動かしていたのですが、昨日より突然、PostgreSQLが動かなくなってしまいました。
原因が分からず、サーバを再起動し、
# /etc/init.d/postgresql start

$ pg_ctl start
などを試してみたのですが、動きません。
念のため、初期化(initdb)も試みたのですが、これも失敗してしまいます。
/var/log/postgresql/postgres/logを覗いてみると、

FATAL: could not wri...続きを読む

Aベストアンサー

それ以外にも、以下のようなコマンドを使ってデータベースサーバプログラムの起動が出来ますよね。

postmaster -D /usr/local/pgsql/data

ただ、以下のURLのドキュメント内には、次のような記述があります。

「何を実行するにしても、サーバはPostgreSQLユーザアカウントで起動させなければなりません。 rootであってはいけませんし、他のユーザでもいけません。」

パッケージによるインストールであれば、自動でpostgresユーザが作られているはずだと思うけど。(Debianは使ったことないので、確証はなし。)

su - postgres

上記のコマンドでログインするなり、パスワードを忘れたのならroot権限にてpasswdコマンドから変更するなりした後、もう一度postmasterを起動してみよう!

ちなみに、パーミッション関係のエラーは、「Permission denied」ですよね。

参考URL:http://www.postgresql.jp/document/pg803doc/html/postmaster-start.html

それ以外にも、以下のようなコマンドを使ってデータベースサーバプログラムの起動が出来ますよね。

postmaster -D /usr/local/pgsql/data

ただ、以下のURLのドキュメント内には、次のような記述があります。

「何を実行するにしても、サーバはPostgreSQLユーザアカウントで起動させなければなりません。 rootであってはいけませんし、他のユーザでもいけません。」

パッケージによるインストールであれば、自動でpostgresユーザが作られているはずだと思うけど。(Debianは使ったことないので、確証は...続きを読む

QString型の日付(2005/11/25)の比較

Java初心者です。String型で2005/11/25 のように2つString型で日付を取得したときに、大小の比較をしたいのです。どういう方法が考えられますか?よろしくお願いします。

Aベストアンサー

書式がyyyy/mm/ddで決め打ちならば他の方が書かれているとおりString#compareTo()で充分でしょう。
yyyy/m/dなど書式が不定の場合には、java.text.DateFormatを利用してjava.util.Dateに変換して比較するか、/で文字列を分解し、年・月・日を抽出してそれぞれを比較するなどが考えられます。

Qテーブルの最後(最新)のレコードを抽出したい

宜しくお願いします。
PHP MYSQL の組み合わせで使っています

以下のようにして、最後のレコードを取り出したいのですが
まったく違う事をしているのかもしれません。

$sql =" select * from テーブル where フィールド='max' " ;

フィールドはauto_incrementで番号を振っています。
これで最大のつもりなのですが・・・。

他にも、レコードを入れた時間も記録したフィールドがあるのですが
どうしてよいか?判りません。

テーブルの最新のレコードを出したいのです。
**その中の一つのフィールドを取り出すのですが、
  それはうまくいっているみたいです 
  (max の所に数字を入れると表示します)

お手数かけますが、どなたかご教授お願いいたします。

Aベストアンサー

#2回答者です。

MySQL 4.1以前(サブクエリを使えない)なら、以下のような方法が考えられます。

select * from 表名
order by 列名 desc limit 1

Qpasswordが入れられません・・・・

コマンドプロントにてDBへ接続するために「psql postgre」と入れたのですが

Password :

となるのですが、どのキーをたたいても入力することができません。エンターキーを押すと

psql: FATAL: password authentication failed for user "postgre"

と出るか

paql: fe_sendauth: no password supplied

と出てしまい何もできません。パスワードはコマンドプロントで入力できないのでしょうか?

Aベストアンサー

パスワードが表示されていないだけで、入力されているんですよ。

だから、
psql: FATAL: password authentication failed for user "postgre"
アクセス権が無い(パスワードが違ってる)
paql: fe_sendauth: no password supplied
パスワードが入力されていない(Enterを押しただけ)
というエラーが返ってきています。

表示されませんから、正確に入力してみましょう。

QHTMLフォームのSELECTの幅を一定にするためには?

HTMLフォームのSELECTの幅を一定にするためにはどのようにすれば
いいのでしょうか?

CSS等で設定できるとありがたいのですが、やり方がわかりません。

Aベストアンサー

<select style="width: 200px">

Q未、済、完了の英訳は?

前回類似件名で質問したのですが、
質問の仕方があまり良くなかったと思い質問し直させて頂きます。

ある項目に対して「未」、「済」、「完了」のいずれかを選択させたい帳票があるのですが、
これを英語で実現するにはどのような単語が当てはまるのでしょうか?(1,2語程度で)
「済」、「完了」については「done」が好ましいのかなと思っていますが
いかがでしょうか?

宜しくお願い致します。

Aベストアンサー

No. 2 です。

なるほど。。。
そういうことなのでしたら、“Done” と “Not Yet” が適切だと思います。

“Yet” は単独で用いられる場合、『まだ~ない』という意味に取られることはなく、接続詞の『でも』の意味で取られます。
なので、選択肢が “Done” と “Yet” であったとしても、理解してもらえない可能性が残ります。
それを排除するためには、“Not Yet” とするべきだと思います。

ご参考まで。^^

QPostgreSQLで表結合+DELETEしたい

PostgreSQLで、テーブル(2)の情報をキーに(1)を削除したいのですが、エラーが出てしまいます。
どなたか解決策をご存知の方いらっしゃいましたら
ご教授宜しくお願い致します。

_構造_____________________
テーブル(1)・・カラムA
テーブル(2)・・カラムA、カラムB

_SQL文_____________________
DELETE
FROM (1)
INNER JOIN (2) ON (1).カラムA= (2).カラムA
WHERE (2).カラムB=X

_エラーメッセージ__________
[Err] ERROR: syntax error at or near "INNER"

Aベストアンサー

PostgreSQLではDELETE文の拡張構文として「USING」が使えます。

DELETE
FROM (1)
USING (2)
WHERE (1).カラムA= (2).カラムA
AND (2).カラムB=X

マニュアルを参照してください。
http://www.postgresql.jp/document/9.0/html/sql-delete.html

Qc++ プログラムについて

txtデータを読み込みデータの行をカウントする
指定した行の前後に違うデータを書き込む

指定する行は複数行であるが書き込むデータは始め以外同じ
書き込む数の初めは1からカウントする

書き込むデータは2進数である
といったプログラムを作成したいのですが
アドバイスなどお願いします

Aベストアンサー

>javaプログラムは組んだことがあるのですがc++は初めてでサイトを見てもよくわからないことが多いので
基本的にあなたが悩んでいる部分は言語の違いは関係ありません
考え方の問題なので

https://gab-km.bitbucket.io/blog/html/2013/11/21/typical_of_cplusplus_file_io.html
http://www.geocities.jp/eneces_jupiter_jp/cpp1/005-004.html
必要な知識はここら辺ですかね?

まぁこの際ある程度書きますが...
頭の中で考えているだけで、実際に動かしているわけではないので
正しく動く保証はできません、そこは調整してください
あといくらか省略していますが、既にご自身で書いてあるソースから想像できると思うので
そこは自分で書き足してくださいね

挿入する行の計算方法は「指定した行」±1ですね

cin >> a; //行指定

std::ofstream ofs("新しいファイル");
std::string line;
int i = 1;
while (std::getline(ifs, line))
{
if( a == i-1 )
{
ofs << 挿入するデータ << std::endl;
}

ofs << line << std::endl;

if( a == i+1 )
{
ofs << 挿入するデータ << std::endl;
}
}

我ながらなかなか雑な処理です
もっとスマートに作れるでしょうけど
まぁ求めている出力は出せるかと

>javaプログラムは組んだことがあるのですがc++は初めてでサイトを見てもよくわからないことが多いので
基本的にあなたが悩んでいる部分は言語の違いは関係ありません
考え方の問題なので

https://gab-km.bitbucket.io/blog/html/2013/11/21/typical_of_cplusplus_file_io.html
http://www.geocities.jp/eneces_jupiter_jp/cpp1/005-004.html
必要な知識はここら辺ですかね?

まぁこの際ある程度書きますが...
頭の中で考えているだけで、実際に動かしているわけではないので
正しく動く保証はできません、そ...続きを読む

QWindowsのレジストリというものは、Cドライブというところにあるのでしょうか?

Windowsのレジストリというものは、Cドライブというところにあるのでしょうか?

Aベストアンサー

HDDから新しく買ったSSDにCドライブを移動しようと思ったのですが、そういえばインストールしたソフトなどはレジストリ情報がないと起動できないみたいなことを聞いたので、そのレジストリはどこにあるのだろうと思って聞きました!<

HDDからSSDへの移行は、クローン作成ソフトでHDDの内容をそっくりSSDに移せばレジストリ
をいじらなくてもSSDにレジストリ情報も一緒に移行しているので大丈夫です。

Qc言語の課題がわかりません

XOR を用いて文字列の暗号化及び暗号化された文字列の復号化をするプログラムを作成し,暗号化した文字列の結果は code.txt に出力し、復号化する際には code.txt からファイルを読み込んで復号化することとし、入力する文字列は最大で 9 文字までとする。暗号化および復号化には鍵として1つの文字用いる。鍵は暗号化の際に入力させ、復号化の際にも同じ鍵を用いる。暗号化は文字列の各文字ごとに鍵との間の XOR を取るものとする。と課題で出たのですが、自分には難しすぎて出来ません。どなたかおしえてください。プログラムの途中経過と実行例を記しておきます。
#include<stdio.h>
int main(){
int x;
char a[256],b[256];

printf("Select Mode 1.Encryption, 2.Decryption :");
scanf("%d",&x);
if(a==1){
printf("Input passphrase :");
scanf("%s",a);
printf("Input key:");
scanf("%d",b);
}else{
printf("Input key:");
scanf("%d",b);

}

if(a==3){
printf("Invalid value\n");
}
return 0;
}
<実行例 1>
Select Mode 1.Encryption, 2.Decryption : 1
Input passphrase : password
Input key : $
TEWWSKV@
<実行例 2>
Select Mode 1.Encryption, 2.Decryption : 2
Input key : $
Code : TEWWSKV@
Decode : password
<実行例 3>
Select Mode 1.Encryption, 2.Decryption : 3
Invalid value

XOR を用いて文字列の暗号化及び暗号化された文字列の復号化をするプログラムを作成し,暗号化した文字列の結果は code.txt に出力し、復号化する際には code.txt からファイルを読み込んで復号化することとし、入力する文字列は最大で 9 文字までとする。暗号化および復号化には鍵として1つの文字用いる。鍵は暗号化の際に入力させ、復号化の際にも同じ鍵を用いる。暗号化は文字列の各文字ごとに鍵との間の XOR を取るものとする。と課題で出たのですが、自分には難しすぎて出来ません。どなたかおしえてください...続きを読む

Aベストアンサー

以下、ファイルの入出力を絡めると理解が遠のくので、
シンプルに、画面を通しての入出力動作をするものにしました。
forループの中で行っている1行が最も重要な箇所なので、じっくり理解して下さい。

#include<stdio.h>
#include<string.h>

int main() {
int x;
char a[9+1];
char b[1+1];
char r[9+1];

memset(a, 0x00, sizeof(a));
memset(b, 0x00, sizeof(b));
memset(r, 0x00, sizeof(r));

printf("Select Mode 1.Encryption, 2.Decryption : ");
scanf_s("%d", &x);
if (x == 1) {

printf("Input passphrase : ");
scanf("%s", a);

printf("Input key: ");
scanf("%s", b);

} else if (x == 2) {
printf("Input key: ");
scanf("%s", b);

printf("Code : ");
scanf("%s", a);

printf("Decode : ");

} else {
printf("Invalid value\n");
return 0;
}

for (unsigned int i = 0; i < strlen(a); i++) {
r[i] = a[i] ^ b[0];
}

printf("%s\n", r);

return 0;
}

以下、ファイルの入出力を絡めると理解が遠のくので、
シンプルに、画面を通しての入出力動作をするものにしました。
forループの中で行っている1行が最も重要な箇所なので、じっくり理解して下さい。

#include<stdio.h>
#include<string.h>

int main() {
int x;
char a[9+1];
char b[1+1];
char r[9+1];

memset(a, 0x00, sizeof(a));
memset(b, 0x00, sizeof(b));
memset(r, 0x00, sizeof(r));

printf("Select Mode 1.Encryption, 2.Decryption : ");
scanf_s("%d", &x);
if (x == 1) {

printf(...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング