mysql表不存在_MySQL表不存在。 但它确实(或它应该)
MySQL>表不存在。 但它确实(或它应该)
我确实更改了MySQL安装的datadir,并按照一些步骤运行正常。 我所拥有的每个基地都正确地移动了一个。
我可以连接和使用数据库,甚至SHOW TABLES正确返回所有表,并且mysql数据目录中存在每个表的文件。 但是当我尝试在那里选择某些东西时,它表示该表不存在。 但表确实存在,它甚至在SHOW TABLES声明中显示!
我的猜测是,SHOW TABLES列出了文件以某种方式存在文件损坏或类似的东西,但它没有检查它。 所以我可以列出它们但不能访问它们。
但这只是猜测,我以前从未见过这个。 现在无法重新启动数据库进行测试,使用它的每个其他应用程序运行正常。
有谁知道它是什么?
例:
mysql> SHOW TABLES;
+-----------------------+
| Tables_in_database |
+-----------------------+
| TABLE_ONE |
| TABLE_TWO |
| TABLE_THREE |
+-----------------------+
mysql> SELECT * FROM TABLE_ONE;
ERROR 1146 (42S02): Table 'database.TABLE_ONE' doesn't exist
30个解决方案
233 votes
万一有人还在乎:
使用命令直接复制数据库目录后,我遇到了同样的问题
cp -r /path/to/my/database /var/lib/mysql/new_database
如果你使用一个使用ib*表的数据库,你会得到上面提到的这个疯狂的“表不存在”错误。
问题是您需要MySQL数据库的根目录中的ib*文件(例如ibdata1,2242762929398492162和ib_logfile1)。
当我复制那些它为我工作。
Mike Dacre answered 2019-03-03T12:39:41Z
38 votes
对于我在Mac OS(MySQL DMG安装)上,简单重启MySQL服务器解决了这个问题。 我猜测冬眠导致了它。
Martin answered 2019-03-03T12:40:11Z
23 votes
当我正在使用的表名的情况关闭时,我得到了这个问题。 所以table被称为'db',但我在select语句中使用'DB'。 确保案例相同。
dkinzer answered 2019-03-03T12:40:42Z
22 votes
将lower_case_table_names设置为1,然后尝试访问使用该变量的默认值创建的表时,也会发生此错误。 在这种情况下,您可以将其还原为以前的值,您将能够读取该表。
golimar answered 2019-03-03T12:41:12Z
14 votes
停止mysqld
backup mysql文件夹:mysqldump < dbase.mysql
将数据库文件夹从旧机器复制到mysqldump < dbase.mysql
从旧数据库覆盖ib *(ib_logfile *,ibdata)
启动mysqld
转储数据库
mysqldump < dbase.mysql
停止mysql服务
删除mysqldump < dbase.mysql
将mysqldump < dbase.mysql重命名为/var/lib/mysql
启动mysqld
创建数据库
mysqldump < dbase.mysql
user1772382 answered 2019-03-03T12:43:07Z
12 votes
请运行查询:
SELECT
i.TABLE_NAME AS table_name,
LENGTH(i.TABLE_NAME) AS table_name_length,
IF(i.TABLE_NAME RLIKE '^[A-Za-z0-9_]+$','YES','NO') AS table_name_is_ascii
FROM
information_schema.`TABLES` i
WHERE
i.TABLE_SCHEMA = 'database'
不幸的是,MySQL允许在表名中使用unicode和不可打印的字符。如果您通过从某个文档/网站复制创建代码来创建表,那么它有可能在某处具有零宽度空间。
dev-null-dweller answered 2019-03-03T12:43:41Z
9 votes
我在这场噩梦上度过了三天。 理想情况下,您应该有一个可以恢复的备份,然后只需删除损坏的表。 这些类型的错误可能导致您的ibdata1变大(适用于适度表格的100GB +大小)
如果你没有最近的备份,例如你依赖mySqlDump,那么你的备份可能会在过去的某个时候默默地破坏。 您将需要导出数据库,这当然是您无法做到的,因为在运行mySqlDump时您将遇到锁定错误。
因此,作为解决方法,请转到mysql has gone away并删除table_name。*
然后立即尝试转储表; 这样做现在应该有效。 现在将数据库还原到新数据库并重建丢失的表。 然后转储损坏的数据库。
在我们的案例中,我们也经常在所有数据库上随机获取mysql has gone away条消息; 一旦损坏的数据库被删除,一切都恢复正常。
Andy answered 2019-03-03T12:44:42Z
8 votes
我有同样的问题,我搜索了2-3天,但对我来说解决方案真的很愚蠢。
重启mysql
$ sudo service mysql restart
现在表变得可访问了。
Siraj answered 2019-03-03T12:45:31Z
7 votes
在复制idb-file之前尝试运行sql查询以丢弃表空间:
ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;
复制idb文件
ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;
重启MySql
l0pan answered 2019-03-03T12:46:14Z
7 votes
好。 这听起来很荒谬,但幽默我。
对我来说,当我将声明更改为此时问题得到了解决:
SELECT * FROM `table`
我做了两处改动
1.)使表名小写 - 我知道!!
2.)使用特定的引号=`:它是你的TAB上方的键
解决方案确实听起来很荒谬,但它确实有效,而且是星期六晚上,我从上午9点开始工作 - 所以我会接受它:)
祝好运。
PlanetUnknown answered 2019-03-03T12:47:27Z
5 votes
在重新安装MySQL之后我遇到了同样的问题,似乎在安装过程中,一些存储有关InnoDB日志文件数据的配置文件,这些文件ib_logfile *(它们是日志文件对吗?)都被覆盖了。 为了解决这个问题,我刚刚删除了ib_logfile *文件。
JCM answered 2019-03-03T12:47:56Z
5 votes
与幽灵表有类似的问题。 谢天谢地,在失败之前有一个SQL转储。
在我的情况下,我不得不:
停止mySQL
将ib *文件从/var/mysql移至备份
删除/var/mysql/{dbname}
重启mySQL
重新创建空数据库
恢复转储文件
注意:需要转储文件。
Oli Stockman answered 2019-03-03T12:49:24Z
5 votes
升级WAMP但没有数据库备份后我遇到了这个问题。
这对我有用:
停止新的WAMP
从旧的WAMP安装中复制您需要的数据库目录和ibdata1文件
删除ib_logfile0和ib_logfile1
启动WAMP
您现在应该能够备份数据库了。 但是,在服务器重新启动后,您仍然会遇到问题。 所以现在重新安装WAMP并导入数据库。
ykay answered 2019-03-03T12:50:32Z
3 votes
什么对我有用,只是放弃了桌子,即使它不存在。 然后我重新创建了表并从之前完成的sql dump中填充。
必须有一些表名的元数据库,并且它很可能仍然存在于那里直到我删除它。
Zoobra McFly answered 2019-03-03T12:51:10Z
2 votes
我在新电脑上安装了MariaDB,停止了Mysql服务将数据文件夹重命名为数据 - 我刚刚解决了我的问题Mysql \ data \ table_folders和ibdata1从崩溃的HD MySql数据文件夹到新安装的mysql数据文件夹。
我跳过了ib_logfile0和ib_logfile1(否则服务器没有启动服务)
启动mysql服务。
然后服务器正在运行。
Tony answered 2019-03-03T12:52:06Z
2 votes
似乎问题(至少在我和其他一些人中)与无效(腐败?)innodb日志文件有关。 一般来说,他们只需要重新创建。
这里有解决方案,其中大部分需要重启mysql。
重新创建日志文件(删除并重启mysql)
调整日志文件的大小(MySql 5.6+将为您重新生成文件)
如果您正在进行某种类型的数据迁移,请确保已正确迁移正确的文件并赋予其权限,因为其他人已经声明
检查数据和日志文件的权限,mysql是两者的所有者
如果所有其他方法都失败了,您可能需要重新创建数据库
SeanDowney answered 2019-03-03T12:53:24Z
2 votes
这是另一个场景(版本升级):
我重新安装了我的操作系统(Mac OS El Captain)并安装了新版本的mysql(使用自制程序)。 安装的版本(5.7)恰好比我之前的版本更新。 然后我复制了表,包括ib *文件,并重新启动了服务器。 我可以在mysql工作台中看到这些表,但是当我尝试选择任何东西时,我得到了“表不存在”。
解:
停止mysql服务器,例如 mysql.server stop或mysql.server start
使用mysql.server start启动服务器(根据需要更改路径)
运行mysql.server start(在另一个终端窗口中)
关闭正在运行的服务器mysql.server start
以正常模式mysql.server start或brew services start mysql重新启动服务器
相关文档在这里。
Roman Kutlak answered 2019-03-03T12:55:08Z
2 votes
我不知道原因,但在我的情况下,我解决了只是禁用和启用外键检查
SET FOREIGN_KEY_CHECKS=0;
SET FOREIGN_KEY_CHECKS=1;
Bruno Caponi answered 2019-03-03T12:55:50Z
2 votes
对数据库执行mysqldump:
mysql -u user -ppass dbname < D:\Back-ups\dbname.sql
恢复数据库
mysql -u user -ppass dbname < D:\Back-ups\dbname.sql
现在,数据库中的所有表都已完全恢复。 尝试..
SELECT * FROM dbname.tablename;
Zaw Htoon answered 2019-03-03T12:56:56Z
1 votes
您可能在表名中有一个隐藏的字符。 当你做表演时,那些不会出现。 你能做一个“SHOW CREATE TABLE TABLE_ONE”并选项卡完成“TABLE_ONE”,看它是否放入任何隐藏的字符。 此外,你有没有尝试删除和重新制作表格。 只是为了确保权限没有任何问题,并且没有隐藏的字符。
Hoopdady answered 2019-03-03T12:57:29Z
1 votes
Time Machine备份导入后的相同问题。 我的解决方案是停止MySQL服务器并修复ib *文件的读写权限。
user3415481 answered 2019-03-03T12:58:02Z
1 votes
我认为另外一个答案值得在这里提出(因为我带着同样的问题来到这里,结果证明这是我的答案):
仔细检查查询中的表名拼写与数据库中的表名完全相同。
一种显而易见的新手,但“用户”和“用户”之类的东西可以让人吵起来,我认为这将是一个有用的答案。:)
vazor answered 2019-03-03T12:59:17Z
1 votes
在我的情况下,当我导入导出的sql文件时,我收到的错误就像创建表查询不存在表。
我意识到我的数据库名称中有一个下划线,而mysql在此之前放置了一个转义字符。
所以我删除了数据库名称中的下划线,一切顺利。
希望它也可以帮助其他人。
Onur Kucukkece answered 2019-03-03T13:00:25Z
1 votes
在我的情况下,它是SQLCA.DBParm参数。
我用了
SQLCA.DBParm = "Databse = "sle_database.text""
但它一定是
SQLCA.DBParm = "Database='" +sle_database.text+ "'"
解释:
您将组合三个字符串:
1. Database=' - "Database='"
2. (name of the database) - +sle_database.text+
3. ' - "'" (means " ' " without space)
不要在quatermarks中使用空格。感谢我的同事Jan.
Marek answered 2019-03-03T13:01:44Z
1 votes
请访问:xampp\mysql\data\dbname
dbname里面有tablename.frm和tablename.ibd文件。
去掉它并重新启动mysql并再试一次。
Abu Sufian answered 2019-03-03T13:02:36Z
1 votes
在我的情况下,我已经在表上定义了一个触发器,然后尝试在表中插入行。 似乎,某种程度上触发是错误的,因此插入是错误的,表不存在。
Yogesh Kumar Gupta answered 2019-03-03T13:03:09Z
1 votes
从旧数据目录中仅复制ibdata1文件。 请勿复制ib_logfile1或ib_logfile0文件。 这将导致MySQL不再启动。
Plabon Dutta answered 2019-03-03T13:03:45Z
1 votes
今天遇到了同样的问题。 这是一个mysql“Identifier Case Sensitivity”问题。
请检查相应的数据文件。 文件系统上的文件名很可能是小写的,但“show tables”命令中列出的表名是大写的。 如果系统变量“lower_case_table_names”为0,则查询将返回“表不存在”,因为当“lower_case_table_names”为0时,名称比较区分大小写。
Hudson Liang answered 2019-03-03T13:04:28Z
0 votes
我有同样的问题,但这不是由于一个隐藏的角色或“schroedinger的桌子”。 在恢复过程之后出现问题(完全如上所述)。 我正在使用MySQL管理员版本1.2.16。 必须执行还原时,必须在目标架构中取消选中ORIGINAL,然后从下拉框中选择数据库的名称。 之后问题得到解决。 至少那是我数据库中的原因。
OSCAR answered 2019-03-03T13:05:09Z
0 votes
如果表名中有句号,则表示失败SELECT * FROM `poorly_named.table`;
使用反引号来查找表格SELECT * FROM `poorly_named.table`;
Chris answered 2019-03-03T13:05:50Z
mysql表不存在_MySQL表不存在。 但它确实(或它应该)相关推荐
- mysql 表空间收缩_mysql表碎片清理和表空间收缩
mysql表碎片清理和表空间收缩(即清理碎片后report_site_day.ibd文件磁盘空间减小,该方案基于独立表空间存储方式) OPTIMIZETABLE [tablename],当然这种方式只 ...
- mysql right join实例_MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程
LEFT JOIN 语法用法与实例MySQL LEFT JOIN 语法 SQL(MySQL) LEFT JOIN 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录.LEFT ...
- mysql表和表的关系_mysql表与表之间建关系
2.浪费硬盘空间 3.扩展性极差 上述的弊端产生原因类似于把代码全部写在一个py文件中,应该怎么做? >> 解耦合! 将上述两张表拆成员工的部门两张表 分析表数据之间的关系:多个员工对应 ...
- mysql 表结构关系_mysql 表关系 与 修改表结构
mysql 表关系 与 修改表结构 两张表关系 多对一 以员工和部门举例 多个员工对应一个部门 foreign key 永远是在多的那张表中设置外键 """ 从左边的表思 ...
- mysql中修改表结构语法_MySQL表结构修改详解
MySQL修改表的语法 ========================= 增加列[add 列名] ========================= ①alter table 表名 add 列名 列 ...
- mysql表不存在_MySQL表不存在。但这确实(或者应该如此)
我确实更改了MySQL安装的datadir,并按照某些步骤运行良好.我曾经动过的每个基地都正确地移动了,但是一个. 我可以连接和使用数据库,即使SHOW TABLES也会正确返回所有表,并且每个表的文 ...
- mysql约束条件整型_MySQL 表的操作
表的操作 创建表的完整语法: create table 表名( 字段名1 字段类型[(宽度) 约束条件], 字段名1 字段类型[(宽度) 约束条件], 字段名1 字段类型[(宽度) 约束条件] ); ...
- mysql表结构定义_Mysql表结构定义及相关语法
mysql语法及相关命令 1.每个sql命令都需要使用分号来完成 2.可以将一个命令写成多行 3.可以通过\c来取消本行命令 4.可以通过\g.exit.ctrl+c或者quit来退出当前客户端 5. ...
- mysql BDB支持表锁吗_mysql 表锁问题
本文转自:http://www.cnblogs.com/itdragon/p/8194622.html MySQL 表锁和行锁机制 行锁变表锁,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整 ...
最新文章
- [UWP]在应用开发中安全使用文件资源
- Matplotlib实例教程(十一)堆栈图
- c语言最小元素下标怎么看,查找最小的k个元素 (C语言代码)
- HTML5性能优化需要注意的几个问题
- Numpy.random中shuffle与permutation的区别(转)
- Redis操作Set的相关API
- (原+转)ubuntu中删除文件夹
- vue与php接口对接,怎样使用vue项目中api接口
- Orleans 知多少 | 2. 核心概念一览
- CSS--居中方式总结
- 抖音最强python_装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案...
- Python的WSGI
- Python风格总结:ASCII码与字符相互转换
- Http Simulate
- AD PCBlayout 总结
- android 高仿淘口令,[Android开发]简单版仿淘口令复制弹出框功能
- dht11温湿度传感器工作原理引脚功能电路接线图
- orcad 连mysql_OrCAD Capture CIS元件库用mysql数据库
- Java中的增强for
- 笔记本设置WiFi热点命令操作