Mysql
斷開的連接,損壞的模式…… MySQL 生病了嗎?
很多問題,我想知道這是否都可以追溯到某些根本原因。我正在嘗試載入與產品行銷相關的簡單模式。症狀是:
mysql -u root -p dbeq < dbeq.sql
由於失去與伺服器的連接,無法轉發所述架構。11kb文件,13張表,每張表最多13列,sql文件是MySQLWorkbench的輸出,所以幾乎可以保證語法沒有錯誤。一開始確實如此SET foreign_key_checks=0
,但我已經逐表檢查了文件表;它以正確的順序創建它們,這樣就不會發生不匹配的外鍵依賴關係。- 頻繁的
**ERROR 2013 (HY000) at line 47: Lost connection to MySQL server during query
類型消息,即使CREATE TABLE
在 mysql shell 中粘貼語句(最多 50 毫秒查詢)。最大數據包為 16Mb,寫入超時為一分鐘,因此這些不能成為限制。- 數據庫每次都會被最後一個表損壞(不能創建表,因為它存在,不能刪除它,因為它不存在)。
- MySQL Workbench 也不能直接對數據庫進行轉發工程;與 MySQL 伺服器的連接不到一秒鐘。
我的 MySQL 有什麼問題嗎?我將嘗試在家中的另一台機器上創建架構(不幸的是 SQLFiddle 已關閉,因此我無法在那裡測試架構)。
的輸出
mysqlcheck -u root -p dbeq
(請注意,創建這麼多表需要 3 次)dbeq.AB_test_questions OK dbeq.AB_test_responses_v0 OK dbeq.ABs OK dbeq.business_units OK dbeq.customers OK dbeq.normalization_survey_customers Error : Table 'dbeq.normalization_survey_customers' doesn't exist status : Operation failed dbeq.normalization_survey_questions OK dbeq.product_test_questions OK dbeq.product_test_responses_v0 OK dbeq.products OK dbeq.project_managers OK dbeq.survey_hashtable OK dbeq.surveys OK
的輸出
mysqldump -d dbeq
-- MySQL dump 10.13 Distrib 5.5.41, for debian-linux-gnu (x86_64) -- -- Host: localhost Database: dbeq -- ------------------------------------------------------ -- Server version 5.5.41-0ubuntu0.14.04.1 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; mysqldump: Got error: 1146: Table 'dbeq.normalization_survey_customers' doesn't exist when using LOCK TABLES
有人給我拿來一個大勺子,我有一大塊不起眼的餡餅要塞進去。
我沒有接受過正規的數據庫培訓,但作為一名開發人員,我不得不與數據庫進行互動(主要是通過 PHP)。我從來都不是創建模式的人。在調試這個時,我真的很難,閱讀了很多 SE 文章(感謝 Rolando,我已經忘記了我上週閱讀了多少你的文章)和 MySQL 手冊。問題是這些錯誤都太抽象了——失去連接錯誤、表不存在錯誤等。
所以我只是嘗試在從未託管過該數據庫的機器上執行模式。伺服器不會接受它,所以我知道這不可能是我對數據字典所做的所有瘋狂愚蠢的事情。SQLfiddle 也不喜歡它,它與外鍵有關,因為它在表上猶豫不決(伺服器也是如此)。
事實證明,我的大多數 FK 都是唯一命名的,這只是運氣!我不知道你必須這樣做。我讀過的所有教程和課程都沒有一個足夠複雜的例子,以至於它成為一個問題。因此,在快速上完課後,我改變了按鍵,一切正常!
SQL 的簡單語法和對其他抽像數據“表”(電子表格、R/Matlab)的使用經驗使開發人員誤以為 DB 很簡單。在每個開發人員的生活中,至少應該強制執行一次企業規模的架構。你們應該得到認真的尊重。