MariaDB - 使用“AS”创建的列的默认值为 1024 [重复]
Posted
技术标签:
【中文标题】MariaDB - 使用“AS”创建的列的默认值为 1024 [重复]【英文标题】:MariaDB - Column created with 'AS' has a default value of 1024 [duplicate] 【发布时间】:2018-08-05 21:09:11 【问题描述】:我有这个问题
SELECT Stations.Instance
,stations.ID
,stations.Name
,Stations.Lat
,Stations.Lon
,(
SELECT GROUP_CONCAT(Line SEPARATOR ';')
FROM transportData.timeTables
WHERE timeTables.Station = stations.ID
GROUP BY timeTables.Station
) AS 'Lines'
,(
SELECT GROUP_CONCAT(Weekdays SEPARATOR ';')
FROM transportData.timeTables
WHERE timeTables.Station = stations.ID
GROUP BY timeTables.Station
) AS 'Weekdays'
,(
SELECT GROUP_CONCAT(Weekends SEPARATOR ';')
FROM transportData.timeTables
WHERE timeTables.Station = stations.ID
GROUP BY timeTables.Station
) AS 'Weekends'
FROM `Stations`
INNER JOIN transportData.stations ON stations.Lat = Stations.Lat
AND stations.Lon = Stations.Lon
WHERE Instance = '$instance'
应该在 Weekdays 列中返回 Weekdays
的列表,该列表与 transportData.stations
的 ID
列具有相同的 Station
列。周末也一样。
我的问题是这些列通常很大,大约 2000 个字符,通过这个查询,我最多可以连接其中的 10 个,所以字符很多。
上面的查询有效,但返回的 Weekdays 和 Weekends 的最大长度为 1024,这根本不够。
如何告诉 MariaDB 我想要超过 1024 个字符的结果?
【问题讨论】:
不相关:考虑 LEFT JOIN 和条件聚合,而不是那些相关的子查询。 您的transportData.timeTables.Weekdays
和transportData.timeTables.Weekends
列是什么数据类型?
【参考方案1】:
您可以扩展 group_concat 限制,更改 my.ini
group_concat_max_len = 10000
【讨论】:
不错的想法,但我认为 10,000 不足以存储 10 个包含 2,000 个字符的列的副本。 这很好用,我使用最大长度作为最大 32 位 我的价值观只是一个建议......而且 OP 似乎找到了正确的长度......以上是关于MariaDB - 使用“AS”创建的列的默认值为 1024 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如果未在 NOT NULL 枚举列上指定值,如何使 MariaDB 产生错误?