我是一个相当新的MySQL,我得到一个非常有趣的错误,我无法通过谷歌和stackoverflow搜索找到任何帮助.
我在MacOS 10.8.3上运行MySQL 5.6.10的本地服务器,并通过Navicat essentials for MySQL管理我的数据库.
我得到的错误是,在运行和管理我的数据库之后,几天/几周的某些触发器(它看起来不完整)删除了我在Navicat中使用查询创建的一些表.
当我尝试使用这些表运行查询时,Navicat然后警告我特定的表不存在.到目前为止一切都很好 - 这里有很好的部分:
当我尝试创建表,例如名为"temp",之前存在时,我收到以下错误消息:
Error : Tablespace for table '`database`.`temp`' exists. Please DISCARD the tablespace before IMPORT.
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试删除该表,或者尝试丢弃该表的表空间,请使用
DROP TABLE temp;
ALTER TABLE temp DISCARD TABLESPACE;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
Error : Unknown table 'database.temp'
Error : Table 'database.temp' doesn't exist
Run Code Online (Sandbox Code Playgroud)
所以这意味着我建议丢弃表空间但是当我尝试这样做时表不存在.是否有可能在DISCARD查询未检查的其他位置存在某种类型的此表的残余?有没有人知道什么可以触发所有这些 - 完全随机的似乎?
正如我所说,我是这个主题的新手,几乎一无所知.我怀疑重新启动我的笔记本电脑,即重置我的本地MySQL服务器,或者用户权限可能与它有关,但我只是在这里假设.
我收到这个错误:
ORA-01950:表空间'USERS'没有特权
我有一个默认的表空间,我可以创建表,但是,它们不会显示在Toad的对象选项卡中.我无法在我创建的表中插入任何内容.
我尝试通过运行以下sql生成一些测试数据.
BEGIN
FOR i IN 1..8180 LOOP
insert into SPEEDTEST
select 'column1', 'column2', 'column3', 'column4', 'column5', 'column6', 'column7', 'column8', 'column9', 'column10', 'column11', 'column12', 'column13', 'column14', 'column15', 'column16', 'column17', 'column18', 'column19', 'column20', 'column21', 'column22', 'column23', 'column24', 'column25', 'column26', 'column27', 'column28', 'column29', 'column30', 'column31', 'column32', 'column33', 'column34', 'column35', 'column36', 'column37', 'column38', 'column39', 'column40', 'column41', 'column42', 'column43', 'column44', 'column45', 'column46', 'column47', 'column48', 'column49', 'column50', 'column51', 'column52', 'column53', 'column54', 'column55', 'column56', 'column57', 'column58', 'column59', 'column60', 'column61', 'column62', 'column63', 'column64', 'column65', 'column66', 'column67', 'column68', 'column69', …Run Code Online (Sandbox Code Playgroud) 我们的应用程序失败了几次,因为'ORA-01536:超出了表空间的空间配额',我们希望能够通过定期检查表空间上的可用空间并在低于某个级别时发出警报来防止这种情况发生. .
有没有办法找出表空间中剩余多少可用空间?
经过一些研究(我不是DBA),我尝试了以下方法:
select max_bytes-bytes from user_ts_quotas;
select sum(nvl(bytes,0)) from user_free_space;
Run Code Online (Sandbox Code Playgroud)
但那些查询会返回完全不同的结果.
我正在创建一个像
create table tablename
as
select * for table2
Run Code Online (Sandbox Code Playgroud)
我收到了错误
ORA-01652 Unable to extend temp segment by in tablespace
Run Code Online (Sandbox Code Playgroud)
当我用Google搜索时,我经常发现ORA-01652错误显示有些值
Unable to extend temp segment by 32 in tablespace
Run Code Online (Sandbox Code Playgroud)
我没有得到任何这样的价值.我跑了这个查询
select
fs.tablespace_name "Tablespace",
(df.totalspace - fs.freespace) "Used MB",
fs.freespace "Free MB",
df.totalspace "Total MB",
round(100 * (fs.freespace / df.totalspace)) "Pct. Free"
from
(select
tablespace_name,
round(sum(bytes) / 1048576) TotalSpace
from
dba_data_files
group by
tablespace_name
) df,
(select
tablespace_name,
round(sum(bytes) / 1048576) FreeSpace
from
dba_free_space
group by
tablespace_name
) fs
where
df.tablespace_name …Run Code Online (Sandbox Code Playgroud) 在调查问题时,我遇到了这个错误:
30503 [错误] InnoDB:尝试打开以前打开的表空间.以前的表空间mysql/innodb_index_stats在文件路径中使用空间ID:2:./ mysql/innodb_index_stats.ibd.无法在文件路径中打开使用空格ID:2的表空间Mydb/be_command_log:./ Model/be_command_log.ibd
在仔细阅读了这个问题后,我才知道这是一个已知的MySQL问题.
但我的问题是我不太了解表空间是如何工作的.它们有用吗?我读了这个定义,但它没有提供所有信息.
有人可以分享关于什么是表空间以及它们如何工作的一些详细信息?
我创建了一个名为的新表空间indexes,我正在尝试删除旧的表空间indexes_old,它曾经包含一些表和索引.当我尝试删除表空间时,我得到:
=> drop tablespace indexes_old;
ERROR: tablespace "indexes_old" is not empty
Run Code Online (Sandbox Code Playgroud)
但是当我试图看到那里有什么时,似乎没有表存在于该表空间中:
=> select * from pg_tables where tablespace = 'indexes_old';
schemaname | tablename | tableowner | tablespace | hasindexes | hasrules | hastriggers
------------+-----------+------------+------------+------------+----------+-------------
(0 rows)
=> select * from pg_indexes where tablespace = 'indexes_old';
schemaname | tablename | indexname | tablespace | indexdef
------------+-----------+-----------+------------+----------
(0 rows)
Run Code Online (Sandbox Code Playgroud)
那么那个表空间阻止我放弃它的是什么?
如果重要,我只是使用pg_upgrade工具从Pg 8.4迁移到Pg 9.0.
表空间如下所示:
Name | Owner | Location | Access privileges | Description
-------------+----------+-----------------+-------------------+-------------
indexes | …Run Code Online (Sandbox Code Playgroud) 我的团队维护着一个约为的Oracle数据库.200GB大小.所有数据(表,索引等)都存在于单个"USERS"表空间中.这是一个坏主意吗?拥有多个表空间有什么好处,在什么情况下我想为我的数据库添加更多?
谢谢!
我正在尝试在postgres中创建一个表空间,但我遇到了所有权问题.我正在使用的命令是:
CREATE TABLESPACE magdat OWNER maggie LOCATION '/home/john/BSTablespace'
Run Code Online (Sandbox Code Playgroud)
我收到错误:
ERROR: could not set permissions on directory "/home/john/BSTablespace": Operation not permitted
Run Code Online (Sandbox Code Playgroud)
该文件夹属于postgres:postgres,我已经尝试将其更改为maggie,但如果我去了:
chown maggie:postgres /home/john/BSTablespace
Run Code Online (Sandbox Code Playgroud)
我明白了:
chown: invalid user: `maggie:postgres'
Run Code Online (Sandbox Code Playgroud)
为什么用户不存在?如果我列出postgres中的用户,它确实会出现.我有什么想法可能做错了吗?
尝试在数据库中插入对象时,我收到以下错误消息:
com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException:
DB2 SQL Error: SQLCODE=-407, SQLSTATE=23502, SQLERRMC=TBSPACEID=2,
TABLEID=19, COLNO=0, DRIVER=4.15.134
Run Code Online (Sandbox Code Playgroud)
如何检索引发错误的表/列名称?
tablespace ×10
oracle ×4
database ×2
mysql ×2
oracle10g ×2
postgresql ×2
chown ×1
db2 ×1
macos ×1
navicat ×1
privileges ×1