SQLAlchemy 创建 MySQL 表时遇到问题 sqlalchemy.exc.InternalError
我正在学习SQL Alchemy的教程,但在创建表的时候遇到了麻烦。我收到了这个错误(完整的错误信息可以在这里查看)
sqlalchemy.exc.InternalError: (InternalError) (1, "无法创建/写入文件 '/mysqltmp/#sql_a5f_0.MYI' (错误代码: 13)") 'DESCRIBE ``users`` ()
当我尝试运行以下代码时
from sqlalchemy import create_engine, MetaData
from ers_config import database_connect_string
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
fullname = Column(String)
password = Column(String)
def __repr__(self):
return "<User(name='%s', fullname='%s', password='%s')>" % (
self.name, self.fullname, self.password)
ed_user = User(name='ed', fullname='Ed Jones', password='edspassword')
my_engine = create_engine(database_connect_string)
Session = sessionmaker(bind=my_engine)
my_session = Session()
Base.metadata.create_all(my_engine)
无论我是否在虚拟环境中,这个错误都会出现。
1 个回答
0
这个问题是因为我最近移动了My SQL的临时文件夹。我的/tmp
文件夹很快就被其他操作填满了,所以我把它移动到了/etc/my.cnf
文件里指定的一个文件夹。
我在文件底部加了一行,内容是:tmpdir=/home/arguably/tmp/mysqltmp
然后,出现错误是因为那个文件的权限设置不对。
我使用了chmod 1777 /home/arguably/tmp/mysqltmp
命令,问题就解决了。
这些信息是我在网上查找资料时得到的,我还是不太明白1777
命令中第一个1
是用来干嘛的。