使用ThinkPHP5框架,包括基于ThinkPHP5框架开发的第三方框架操作数据库时,有时会提示SQLSTATE[42S02]: Base table or view not found: 1146 Table 'testdb.test_table' doesn't exist
。
即找不到表或视图。
首先检查下数据库中是否存在该表,一般情况下是因为表确实不存在。
但是如果检查后发现数据库中有这张表,但是还报这个错误,那就很奇怪了。
笔者最近就遇到了这个问题,之前还遇到过报错字段不存在,都是同样的问题。
切换PHP版本、数据库版本、使用不同的数据库类去操作都报同样的错误,看来是真的不存在!
那问题到底出在哪儿呢?
其实也很简单,创建表或字段时有特殊字符写进去了!比如制表符、回车符,Del等无法用肉眼甄别的字符。虽然看上去就是查询时用的表或字段,但实际上它在数据库中的名称不是看到的那样!
这种情况下的解决办法
- 重命名表或字段
- 删除表或字段,重建即可。