私は動的に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_packet
とgroup_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_packet)。
ここにキッカーがありますこの権利を取得する初期の段階で、私は完全な文字列を返しました。しかし、結果を再現することはできません。
私のコードに目立つ問題はありますか?私はかなりMySQLに新しいですし、これのほとんどはGoogle検索から一緒に縫い合わせられました。
ありがとうございました。
編集:問題は他の場所にある必要があります。私は完全な文字列を見ることができたし、すべてが本当にそこにあるようだ。ありがとうございました。
'group_concat_max_len'の設定方法によっては、サーバの再起動時に値がデフォルトにリセットされることがあります。それはあなたの問題だろうか? – Uueerdo
これ以降、サーバーは確実に再起動されませんでした。 'SET SESSION group_concat_max_len = 102400'や' SET @@ group_concat_max_len = 102400'を含めても、私はまだ同じ問題を抱えています。 – Dustin
これはオペレータエラーです。次の問題 ! – Drew