SQLiteでカラムの型間違ったので直す
スポンサードリンク
SQLiteでTEXT型にしとく必要があったのにINTEGER型で宣言しちゃった。んで直すと。
なんで直さなくちゃいけないかっていうと、INTEGER型だと、頭に0がつく文字列を入力すると自動的に0が取れてしまうから。いくらSQLiteが型に無頓着だっていっても、それぐらいの仕事はするよね。
コマンドラインで。
$ sqlite3 customers.db
既存のテーブルを確認。
sqlite> .schema CREATE TABLE customers( id INTEGER PRIMARY KEY AUTOINCREMENT, company TEXT, customer_id INTEGER, comment TEXT, ctime DEFAULT CURRENT_TIMESTAMP, atime DEFAULT CURRENT_TIMESTAMP );
この例でいうと、customer_idをINTEGER型からTEXT型にしたい。
というわけで、さっき.schemaで表示されたテーブル生成文をコピーして、必要な部分の属性を変えて以下のように。
BEGIN TRANSACTION; CREATE TABLE customers_temp( id INTEGER PRIMARY KEY AUTOINCREMENT, company TEXT, customer_id TEXT, comment TEXT, ctime DEFAULT CURRENT_TIMESTAMP, atime DEFAULT CURRENT_TIMESTAMP ); INSERT INTO customers_temp SELECT * FROM customers; DROP TABLE customers; CREATE TABLE customers( id INTEGER PRIMARY KEY AUTOINCREMENT, company TEXT, customer_id TEXT, comment TEXT, ctime DEFAULT CURRENT_TIMESTAMP, atime DEFAULT CURRENT_TIMESTAMP ); INSERT INTO customers SELECT * FROM customers_temp; DROP TABLE customers_temp; COMMIT;
なんてした。
終わった後、VACUUM; しとくとよい。もっと良いやり方あると思うけど、汎用性もあると思うのでメモ。
投稿 大野 義貴 [パソコン・インターネット] | 固定リンク |
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3283
コメントする