错误1146(42S02):表't.test_0'不存在,但表在表列表中

时间:2019-07-10 11:40:30

标签: mysql

我是mysql的初学者。我安装了mysql 8.0.16。然后我用root登录,创建了一个数据库。然后,我尝试使用Sequel pro创建表。完成此操作后,错误1146(42S02)表'securities_master.exchange'不存在。我尝试了多种方法来修复它,但是没有任何效果。我真的不知道该如何处理。

服务器版本:8.0.16 MySQL社区服务器-GPL 系统:MacOS 10.14 首先,我使用自制软件安装mysql。然后问题出来了。 我试图将其卸载并使用DMG进行安装。 然后,我尝试用小写字母键入数据库名称和表名称。 我删除了ib_logfile0和ib_logfile1。 我重新启动了服务器。 我删除了数据库,然后再次创建。 他们没有工作。

'''

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> create database t;
Query OK, 1 row affected (0.01 sec)

mysql> use t;
Database changed
mysql> CREATE TABLE ‘test’(
    -> ‘id’ int(11) unsigned NOT NULL AUTO_INCREMENT, 
    -> ‘name’ varchar(10) NOT NULL,
    -> PRIMARY KEY (‘id’)
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+-------------+
| Tables_in_t |
+-------------+
| ‘test’      |
+-------------+
1 row in set (0.00 sec)

mysql> desc test;
ERROR 1146 (42S02): Table 't.test' doesn't exist
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| component                 |
| db                        |
| default_roles             |
| engine_cost               |
| func                      |
| general_log               |
| global_grants             |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| password_history          |
| plugin                    |
| procs_priv                |
| proxies_priv              |
| role_edges                |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
33 rows in set (0.00 sec)

'''

1 个答案:

答案 0 :(得分:1)

您似乎对单引号'和反引号`感到困惑。所示的引号不会被MySQL识别为引号,而是简单的字符。

您似乎使用的引号实际上甚至不是标准单引号,而是混合引号

您显示:

+-------------+
| Tables_in_t |
+-------------+
| ‘test’      |
+-------------+

表的名称是‘test’而不是test

因此

  

错误1146(42S02):表't.test'不存在

这样做:

mysql> desc `‘test’`;

或者,使用正确的引号从头开始创建表-反引号:

mysql> CREATE TABLE `test`(
    -> `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    -> `name` varchar(10) NOT NULL,
    -> PRIMARY KEY (`id`)
    -> );

也请注意,name不是MySQL关键字,也不建议用作列名。

反引号通常位于键盘左上角数字1的最左侧。