排除 MySQL 技術疑難問題: Difference between revisions

Jump to navigation Jump to search
Line 108: Line 108:
可能的解決方案
可能的解決方案
* 因為 [https://dev.mysql.com/doc/refman/5.7/en/data-directory.html MySQL 數據目錄] 所在的硬碟分區已滿或幾乎已滿,釋放一些硬碟空間<ref>[http://stackoverflow.com/questions/730579/error-1114-hy000-the-table-is-full mysql - 錯誤 1114 (HY000): 表格已滿 - Stack Overflow]</ref>。
* 因為 [https://dev.mysql.com/doc/refman/5.7/en/data-directory.html MySQL 數據目錄] 所在的硬碟分區已滿或幾乎已滿,釋放一些硬碟空間<ref>[http://stackoverflow.com/questions/730579/error-1114-hy000-the-table-is-full mysql - 錯誤 1114 (HY000): 表格已滿 - Stack Overflow]</ref>。
=== 錯誤 1170: 在鍵規格中使用 BLOB/TEXT 欄位且沒有鍵長 ===
情況
* 嘗試建立新表格時的 SQL 語法
<pre>
DROP TABLE IF EXISTS `my_table`;
/*!40101 SET @saved_cs_client    = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `my_table` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `url` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `status` tinyint(2) unsigned NOT NULL DEFAULT 1,
  PRIMARY KEY (`job_id`),
  UNIQUE KEY `url` (`url`) USING HASH
) ENGINE=InnoDB AUTO_INCREMENT=3573 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
</pre>
解決方案:在鍵規格中使用 BLOB/TEXT 欄位並指定鍵長,例如 {{kbd | key=`url`(500)}}
<pre>
DROP TABLE IF EXISTS `my_table`;
/*!40101 SET @saved_cs_client    = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `my_table` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `url` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `status` tinyint(2) unsigned NOT NULL DEFAULT 1,
  PRIMARY KEY (`id`),
  UNIQUE KEY `url` (`url`(500))
) ENGINE=InnoDB AUTO_INCREMENT=3573 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
</pre>


== 資源和環境錯誤 ==
== 資源和環境錯誤 ==

Navigation menu