2016-09-27 8 views
-1

私は動的にMySQLのテーブルをピボットしています(phpではなく1ステップずつ)。MySQL Group_Concatはgroup_concat_max_lenを増やした後でも結果を切り捨てます。

私の連結は、次のようになります。

SELECT GROUP_CONCAT(DISTINCT CONCAT('MAX(IF(name = "', p.name,'",te.hours, 0)) AS "', p.name, '"')) 
FROM time_entries te 
inner join projects p on p.id = te.project_id 
where te.spent_on >= '2016-07-01'; -- test date 

私のリターンは、(文字のいくつかの情報編集さが、同じ#)かなり早期に切り捨てられます:私はすべてに約max_allowed_packetgroup_concat_max_lenを知っている今

MAX(IF(name = "redact",te.hours, 0)) AS "redact",MAX(IF(name = "red",te.hours, 0)) AS "red",MAX(IF(name = "redactednamebutsamel",te.hours, 0)) AS "redactednamebutsamel",MAX(IF(name = "red",te.hours, 0)) AS "red",MAX(IF(name = "redactednamebutsameleng... 

を、どちらもサーバー上で16777216に設定されています(選択クエリを実行すると見つかりました。たとえば、@@ max_allowed_pa​​cket)。

ここにキッカーがありますこの権利を取得する初期の段階で、私は完全な文字列を返しました。しかし、結果を再現することはできません。

私のコードに目立つ問題はありますか?私はかなりMySQLに新しいですし、これのほとんどはGoogle検索から一緒に縫い合わせられました。

ありがとうございました。

編集:問題は他の場所にある必要があります。私は完全な文字列を見ることができたし、すべてが本当にそこにあるようだ。ありがとうございました。

+0

'group_concat_max_len'の設定方法によっては、サーバの再起動時に値がデフォルトにリセットされることがあります。それはあなたの問題だろうか? – Uueerdo

+0

これ以降、サーバーは確実に再起動されませんでした。 'SET SESSION group_concat_max_len = 102400'や' SET @@ group_concat_max_len = 102400'を含めても、私はまだ同じ問題を抱えています。 – Dustin

+0

これはオペレータエラーです。次の問題 ! – Drew

答えて

0

使用しているツール/言語は何ですか?

たとえば、行ビューで切り捨てられたテキストとレコードを表示するときのフルテキストのみを表示するphpMyAdmin

+0

これはすべてMySQLワークベンチにあります。これは単に私に構文エラーを与えている大規模なクエリのスニペットです。私はそれが切り捨てられているので仮定しています。独立して、私の質問はすべて働いています:S。 – Dustin

+0

構文エラーは、クエリの構造エラーです。それらは決してデータの復帰時の切り捨てによって引き起こされるものではありません。その場合は、他のエラーが発生します。 – Matijs

+0

返された文字列は、新しいクエリに再び連結されています。 問題がある場合は、切り捨てられていない結果が表示されることはありますか?これを休むことができるように私のためだけに。 – Dustin

関連する問題