8
12.04を実行しているUbuntuマシンでmysqlを使用してリモートデータベースを作成しようとしています。InvalidRequestError:dialect mysqlでVARCHARの長さが必要です
リモートログインが有効でパスワードがないrootユーザーがいます。サーバーを起動しました。
sudo netstat -tap | grep mysql
の
出力は、私が使用してnwtopologyと呼ばれるデータベースを作成している
tcp 0 0 localhost:mysql *:* LISTEN 13246/mysqld
を示し(言及したルートとしてはまだパスワードを持っていません。)
create database nwtopology
grant all privileges on *.* to [email protected]
FLUSH PRIVILEGES;
からUbuntuを実行するクライアントマシン12.04私はPythonスクリプトを使用して、リモートのmysqlデータベースにsqlalを使用して接続しますケミ。
from pox.core import core
import pox.openflow.libopenflow_01 as of
import re
import datetime
import time
from sqlalchemy import create_engine, ForeignKey
from sqlalchemy import Column, Date, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.sql.expression import exists
log = core.getLogger()
engine = create_engine('mysql://[email protected]/nwtopology', echo=False)
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()
class SourcetoPort(Base):
""""""
__tablename__ = 'source_to_port'
id = Column(Integer, primary_key=True)
port_no = Column(Integer)
src_address = Column(String,index=True)
#-----------------------------------------
def __init__(self, src_address,port_no):
""""""
self.src_address = src_address
self.port_no = port_no
#create tables
Base.metadata.create_all(engine)
最後の行
Base.metadata.create_all(engine)
リターンエラー
File "/usr/lib/python2.7/dist-packages/sqlalchemy/sql/compiler.py", line 1699, in visit_string
return self.visit_VARCHAR(type_)
File "/usr/lib/python2.7/dist-packages/sqlalchemy/dialects/mysql/base.py", line 1654, in visit_VARCHAR
self.dialect.name)
InvalidRequestError: VARCHAR requires a length on dialect mysql
これは何を意味するのでしょうか?どのように私はMySQLのVARCHARの長さを設定できますか?私はsqlalchemyとmysqlの新機能です。