DBテーブルが生成されない

2011年1月18日 at 12:37

マニュアルに沿い、ブロックの作成を試みました。
以下のdb.php を作成し、それぞれの値をadd.phpより、フォームオブジェクトを介して保管するように組みました。

<?xml version="1.0"?>
<schema version="0.3">
<table name="amarank">
<field name="bID" type="I">
<key />
<unsigned />
</field>

<field name="keywords" type="C">
</field>

<field name="category" type="X2">
</field>

<field name="number" type="C">
</field>

<field name="width" type="C">
</field>

<field name="height" type="C">
</field>


</table>
</schema>


ところが、ブロックを挿入しても、一番上の'BId'および'keywords'フィールド以外のフィールドが生成されていないようで、もちろんプログラムが動作しません。ブロック自体は空のブロックとして挿入されます。
そして、DBのadminより手動でフィールドを生成すると動作します。

controller.phpの中のテーブル名も、一致しております。フィールドがひとつしか出来ないのは、何か上記の文法上のミスと疑っているのですが、どこがおかしいのか、見当がつかないでおります。

 どなたか、お分かりになる方はいらっしゃいませんでしょうか?
よろしくお願いいたします。

Re: DBテーブルが生成されない

2011年1月18日 at 15:37
db.phpじゃなくて、db.xmlですね。
 

Re: Re: DBテーブルが生成されない

2011年1月18日 at 16:16
失礼しました。記入ミスです。

ファイル名はdb.xmlで作成しました。
 

Re: Re: Re: DBテーブルが生成されない

2011年1月18日 at 16:34
予想ですが、InnoDBでテーブルが作られていませんか?
多分type="X2"だとMySQLではカラムの型がtextになる気がします。
InnoDBではtext型は扱えなかったので、それでエラーになってるのでは?
と思います。
 

Re: Re: Re: Re: DBテーブルが生成されない

2011年1月18日 at 16:55
ご返信ありがとうございます。
DBはあまり詳しくないのですが、データ形式をCやIにしても同じでした。
デフォルトブロックなどはきちんと動作します。
 

Re: Re: Re: Re: Re: DBテーブルが生成されない

2011年1月18日 at 17:24
うーん。
あとは実際の動作を見てみないと何とも言えません。

カラム名を変えてみるのも良いかもしれません。
 

Re: Re: Re: Re: Re: Re: DBテーブルが生成されない

2011年1月18日 at 23:05
tao様ありがとうございます。

やはりtao様のおっしゃられた通り、データタイプに問題があったようです。

とりあえず、全部「X」にしたらDBは生成されました。

本当は、さらにふさわしい設定があるとは思うのですが、知識の限界につき、これで進めようと思います。

いろいろ有難うございます。
 

X2でも平気そうです。

2011年1月19日 at 4:39
クロスリファレンスも作ったので、ちょっと気になって調べてみましたが、X2だとLONG TEXTとしてカラムが作られる様です。

で、先の書き込みで僕が勘違いしてました。InnoDBでもtext型は作れます。ただフルテキストインデックスが作れないだけでした。
そして
http://concrete5.xross-cube.com/concrete5-5.4.1.1.1.ja_ref/concrete/blocks/content/db.xml.source.html
の様にX2でもテーブルは作成されます。

全角と半角を間違えたとか何か単純なミスが原因の様な気がします。