我正在嘗試更改我的InnoDB表中的一個。 這是查詢:更改MySQL表給出1114表已滿
ALTER TABLE `tf5h_assets`
ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `idx_asset_name` (`name`), ADD KEY `idx_lft_rgt` (`lft`,`rgt`), ADD KEY `idx_parent_id` (`parent_id`);
錯誤是:
#1114 - The table 'tf5h_assets' is full
我不undesrtand是怎麼回事「滿」時,它的空表我從MySQL創建轉儲(結構,無數據)文件。
有什麼奇怪的是,我可以改變它像這樣:
ALTER TABLE `tf5h_assets`
ADD PRIMARY KEY (`id`);
ALTER TABLE `tf5h_assets`
ADD UNIQUE KEY `idx_asset_name` (`name`);
ALTER TABLE `tf5h_assets`
ADD KEY `idx_lft_rgt` (`lft`,`rgt`);
ALTER TABLE `tf5h_assets`
ADD KEY `idx_parent_id` (`parent_id`);
,並沒有拋出錯誤。 我在做什麼錯? 此ALTER TABLE語句來自結構mysql轉儲文件。有沒有辦法像我以某種方式分裂時,結構導出,所以我不必手動做呢?
我谷歌「表已滿」的錯誤,這是我做了什麼至今:檢查磁盤空間
1) - 自由空間80+演出
2)添加到my.cnf文件:
innodb_file_per_table = 1
innodb_file_format = barracuda
並重新啓動mysql服務器並創建新的數據庫。
編輯:
我解決我的問題,但我不知道如何解決它的數據庫,我將無法從的Joomla出口。
的事情是,phpMyAdmin是從密鑰創建這樣的分離表的創建:
CREATE TABLE IF NOT EXISTS `tf5h_assets` (
`id` int(10) unsigned NOT NULL COMMENT 'Primary Key',
`parent_id` int(11) NOT NULL DEFAULT '0' COMMENT 'Nested set parent.',
`lft` int(11) NOT NULL DEFAULT '0' COMMENT 'Nested set lft.',
`rgt` int(11) NOT NULL DEFAULT '0' COMMENT 'Nested set rgt.',
`level` int(10) unsigned NOT NULL COMMENT 'The cached level in the nested tree.',
`name` varchar(50) NOT NULL COMMENT 'The unique name for the asset.\n',
`title` varchar(100) NOT NULL COMMENT 'The descriptive title for the asset.',
`rules` varchar(5120) NOT NULL COMMENT 'JSON encoded access control.'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=382 ;
和比以後:
ALTER TABLE `tf5h_assets`
ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `idx_asset_name` (`name`), ADD KEY `idx_lft_rgt` (`lft`,`rgt`), ADD KEY `idx_parent_id` (`parent_id`);
,稍後:
ALTER TABLE `tf5h_assets`
MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary Key',AUTO_INCREMENT=382;
我管理通過使用Joomla的備份/恢復組件(它是Joomla站點)來啓動和運行我的數據庫。我打開了MySQL的轉儲創建的組件,這是我發現在那裏:
CREATE TABLE `#__assets`
(`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary Key',
`parent_id` int(11) NOT NULL DEFAULT '0' COMMENT 'Nested set parent.',
`lft` int(11) NOT NULL DEFAULT '0' COMMENT 'Nested set lft.',
`rgt` int(11) NOT NULL DEFAULT '0' COMMENT 'Nested set rgt.',
`level` int(10) unsigned NOT NULL COMMENT 'The cached level in the nested tree.',
`name` varchar(50) NOT NULL COMMENT 'The unique name for the asset.\n',
`title` varchar(100) NOT NULL COMMENT 'The descriptive title for the asset.',
`rules` varchar(5120) NOT NULL COMMENT 'JSON encoded access control.',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_asset_name` (`name`),
KEY `idx_lft_rgt` (`lft`,`rgt`),
KEY `idx_parent_id` (`parent_id`))
ENGINE=InnoDB AUTO_INCREMENT=382 DEFAULT CHARSET=utf8;
整個過程是在一個運行中執行,並能正常工作。
現在,我運氣它是Joomla數據庫。但是當數據庫不會成爲Joomla的時候我會怎麼做?我不知道。有沒有辦法改變phpmyadmin商店如何轉儲?終端將訪問mysql創建不同的mysql轉儲,一次性創建數據庫而不是使用「ALTER」?
我並不在意,但是你寫得很好,我不得不贊成:P – vivoconunxino 2015-02-11 15:00:31