MySQL中的ERROR 1146遇到麻烦

时间:2013-05-28 21:23:12

标签: python mysql

所以我正在使用Python做一个基本的MySQL教程,我首先使用以下代码创建一个简单的数据库。

import MySQLdb as mdb

con = mdb.connect('localhost', 'testuser', 'test623', 'testdb')

with con:
    cur = con.cursor()
    cur.execute("DROP TABLE IF EXISTS Writers")
    cur.execute("CREATE TABLE Writers (Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(25))")
    cur.execute("INSERT INTO Writers(Name) VALUES ('Jack London')")
    cur.execute("INSERT INTO Writers(Name) VALUES ('Honore de Balzac')")
    cur.execute("INSERT INTO Writers(Name) VALUES ('Lion Feuchtwanger')")
    cur.execute("INSERT INTO Writers(Name) VALUES ('Emile Zola')")
    cur.execute("INSERT INTO Writers(Name) VALUES ('Truman Capote')")

执行得很好。然后我运行以下MySQL命令。

USE Writers;
SELECT * FROM Writers;

最后一行抛出错误

  

ERROR 1146(42S02):表'Writers.Writers'不存在

任何人都知道是什么导致了这个或为什么它首先尝试访问名为Writers.Writers的内容?

1 个答案:

答案 0 :(得分:1)

您连接到MySQL并将默认数据库设置为testdb。这就是创建Writers表的地方。然后切换到Writers,那里没有这样的表。 e.g。

con = mdb.connect('localhost', 'testuser', 'test623', 'testdb')
                                                       ^^^^^^^--- default DB

SELECT * FROM testdb.Writers

会起作用,

use testdb;
SELECT * FROM Writers